WriteFile: Unterschied zwischen den Versionen

Aus API-Wiki
Wechseln zu: Navigation, Suche
K (Bearbeiten-Hinweis entfernt)
K
Zeile 81: Zeile 81:
 
   TextToWrite = "Hallo, Welt!"
 
   TextToWrite = "Hallo, Welt!"
 
    
 
    
   hFile = CreateFile("C:\Test.txt", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_ALWAYS, 0&, 0&)
+
   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
 
   If hFile = INVALID_HANDLE_VALUE Then

Version vom 17. August 2008, 12:28 Uhr


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 oder OpenFile 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 NULL ü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, _
                        ByRef lpOverlapped As Any) 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, ByVal 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