WriteFile

Aus API-Wiki
Zur Navigation springenZur Suche springen


Declare Function WriteFile Lib "kernel32.dll" ( _
                 ByVal hFile As Long, _
                 ByRef lpBuffer As Any, _
                 ByVal nNumberOfBytesToWrite As Long, _
                 ByRef lpNumberOfBytesWritten As Long, _
                 ByRef lpOverlapped As OVERLAPPED) As Long


Parameter

hFile

Das Handle der Datei, in die geschrieben werden soll. Diese Datei muss vorher mit CreateFile geöffnet worden sein.

lpBuffer

Der Buffer, der die zu schreibenden Daten enthält.

nNumberOfBytesToWrite

Die Anzahl an Bytes, die es zu schreiben gilt. Es muss darauf geachtet werden, dass der in lpBuffer übergebene Wert mindestens nNumberOfBytesToWrite Byte lang ist.

lpNumberOfBytesWritten

In die für lpNumberOfBytesWritten übergebene Variable wird die Anzahl tatsächlich geschriebener Bytes geschrieben.

lpOverlapped

Zeiger auf eine Struktur vom Typ OVERLAPPED. Die Übergabe einer solchen Struktur ermöglicht unter anderem Asynchrone Schreibzugriffe auf eine Datei. Soll keine OVERLAPPED-Struktur übergeben werden, muss bei der Deklaration
ByVal lpOverlapped As Long
geschrieben und beim Aufruf 0 übergeben werden.


Rückgabe(n)

Die Funktion gibt einen Wert des Types Long ungleich 0 bei Erfolg, den Wert 0 bei Misserfolg zurück.


Beispiel

Option Explicit

Private Declare Function CreateFile Lib "kernel32" _
                  Alias "CreateFileA" ( _
                         ByVal lpFileName As String, _
                         ByVal dwDesiredAccess As Long, _
                         ByVal dwShareMode As Long, _
                         ByRef lpSecurityAttributes As Any, _
                         ByVal dwCreationDisposition As Long, _
                         ByVal dwFlagsAndAttributes As Long, _
                         ByVal hTemplateFile As Long) As Long

Private Declare Function WriteFile Lib "kernel32.dll" ( _
                         ByVal hFile As Long, _
                         ByRef lpBuffer As Any, _
                         ByVal nNumberOfBytesToWrite As Long, _
                         ByRef lpNumberOfBytesWritten As Long, _
                         ByVal lpOverlapped As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" ( _
                         ByVal hObject As Long) As Long

Private Const GENERIC_WRITE         As Long = &H40000000
Private Const GENERIC_READ          As Long = &H80000000

Private Const FILE_SHARE_READ       As Long = &H1
Private Const FILE_SHARE_WRITE      As Long = &H2

Private Const OPEN_ALWAYS           As Long = 4

Private Const INVALID_HANDLE_VALUE  As Long = -1

Private Sub Form_Load()
   Dim hFile As Long, retVal As Long, BytesWritten As Long
   Dim TextToWrite As String
   
   TextToWrite = "Hallo, Welt!"
   
   hFile = CreateFile("C:\Test.txt", GENERIC_WRITE, _
                         FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_ALWAYS, 0&, 0&)
   
   If hFile = INVALID_HANDLE_VALUE Then
      Call MsgBox("Es ist ein Fehler beim Aufruf an CreateFile aufgetreten.")
      ' Der Rest wird nun nicht mehr funktionieren, Prozedur verlassen
      Exit Sub
   End If
   
   retVal = WriteFile(hFile, ByVal TextToWrite, Len(TextToWrite), BytesWritten, 0&)
   
   If retVal = 0 Then
      Call MsgBox("Es ist ein Fehler beim Aufruf an WriteFile aufgetreten.")
   End If
   
   Call CloseHandle(hFile)
End Sub

Verwandte Funktionen

OpenFile - Eine Datei öffnen
CreateFile - Eine Datei erstellen, falls sie nicht existiert, und sie öffnen
ReadFile - Aus einer Datei lesen
WriteFileEx - Schreiben einer Datei
ReadFileEx - Lesen einer Datei
CloseHandle - Eine Datei schließen

Quellen

MSDN Library - WriteFile