IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 .NET Discussion :

Utilisation de FILE_FLAG_NO_BUFFERING en VB.net


Sujet :

.NET

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut Utilisation de FILE_FLAG_NO_BUFFERING en VB.net
    Bonjour,

    Je cherche à lire des fichiers sans avoir à passer par le cache windows.

    J'ai trouvé sur le web:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [DllImport("kernel32", SetLastError=true)]
        static extern unsafe SafeFileHandle CreateFile(
            string FileName,           // file name
            uint DesiredAccess,        // access mode
            uint ShareMode,            // share mode
            IntPtr SecurityAttributes, // Security Attr
            uint CreationDisposition,  // how to create
            uint FlagsAndAttributes,   // file attributes
            SafeFileHandle  hTemplate // template file  
            );
     
        SafeFileHandle handle = CreateFile(FileName,
                                FileAccess.Read,
                                FileShare.None,
                                IntPtr.Zero,
                                FileMode.Open,
                                 FILE_FLAG_NO_BUFFERING,
                                null);
     
        FileStream stream = new FileStream(handle, 
                                    FileAccess.Read, 
                                    true, 
                                    4096);
    et ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;
     
    FileStream file = new FileStream(fileName, fileMode, fileAccess, fileShare, blockSize,
        FileFlagNoBuffering | FileOptions.WriteThrough | fileOptions);
    Je ne sais pas comment le réimplanter en Vb.net.

    Auriez vous des exemples de fonctions similaire en VB.net?

    Merci.

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    J'ai pu écrire le code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Dim FileName As String = "Toto"
    Const FileFlagNoBuffering As FileOptions = DirectCast(&H20000000, FileOptions)
     Dim handle As SafeFileHandle = ME.CreateFile(FileName, FileAccess.Read, FileShare.None, 
    IntPtr.Zero, FileMode.Open, 
    FileFlagNoBuffering, Nothing)
    Dim stream As FileStream = New FileStream(handle, FileAccess.Read, True, 4096)
    La méthode CreateFile est défini ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Runtime.InteropServices.DllImport("kernel32", SetLastError:=True)> _
    Public Shared Function CreateFile(ByVal FileName As String, ByVal DesiredAccess As UInteger, 
    ByVal ShareMode As UInteger, ByVal SecurityAttributes As IntPtr, ByVal CreationDisposition As UInteger, ByVal FlagsAndAttributes As UInteger, _
            ByVal hTemplate As Microsoft.Win32.SafeHandles.SafeFileHandle) As SafeFileHandle
     
     End Function
    Mais en exécutant le code j'ai une exception qui apparait à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Dim handle As SafeFileHandle = ME.CreateFile(FileName, FileAccess.Read, FileShare.None, IntPtr.Zero, 
    FileMode.Open, FileFlagNoBuffering, Nothing)
    "SafeHandle cannot be null."

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    J'ai trouvé l'info qu'il me fallait ici:

    http://msdn.microsoft.com/en-us/libr...ilehandle.aspx.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/02/2007, 19h47
  2. [WebForms]Comment utiliser une .dll asp en .net ?
    Par topolino dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 02/10/2006, 21h54
  3. utilisation application Win32 dans Delphi.net (VCL)
    Par emmanuelc dans le forum Delphi .NET
    Réponses: 3
    Dernier message: 26/07/2006, 16h34
  4. Réponses: 6
    Dernier message: 21/07/2005, 17h56
  5. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo