Funktionreferenz


_WinAPI_CreateFile

Beschreibung anzeigen in

Erstellt oder öffnet eine Datei oder ein anderes Gerät

#include <WinAPIFiles.au3>
_WinAPI_CreateFile ( $sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $tSecurity = 0]]]] )

Parameter

$sFileName Name eines Objekts, das erstellt oder geöffnet werden soll
$iCreation Aktion, die auf existierende oder nicht existierende Dateien angewendet werden soll:
    0 - Erstellt eine neue Datei. Die Funktion schlägt fehl, wenn die Datei bereits besteht
    1 - Erstellt eine neue Datei. Falls die Datei bereits existiert, wird sie überschrieben
    2 - Öffnet eine Datei. Die Funktion schlägt fehl, falls die Datei nicht existiert
    3 - Öffnet eine Datei. Falls die Datei nicht existiert, erstellt die Funktion die Datei
    4 - Öffnet eine Datei und trimmt sie so, dass deren Größe 0 Bytes beträgt. Die Funktion schlägt fehl, falls die Datei nicht existiert.
$iAccess [optional] Zugriff auf das Objekt:
    1 - ausführen
    2 - lesen
    4 - schreiben
$iShare [optional] Sharing mode auf das Objekt:
    1 - löschen
    2 - lesen
    4 - schreiben
$iAttributes [optional] Die Dateieigenschaften:
    1 - Datei sollte archiviert sein
    2 - Datei ist versteckt
    4 - Datei ist schreibgeschützt
    8 - Datei ist ein Teil des Betriebssystems oder wird exklusiv von diesem verwendet.
$tSecurity [optional] eine $tagSECURITY_ATTRIBUTES Struktur oder ein Zeiger auf diese, die bestimmt, ob das zurückgegebene Handle von Unterprozessen geerbt werden kann.
Falls $tSecurity 0 ist, kann das Handle nicht geerbt werden.

Rückgabewert

Erfolg: Das geöffnete Handle zu einer festgelegten Datei.
Fehler: 0. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Verwandte Funktionen

$tagSECURITY_ATTRIBUTES, _WinAPI_CloseHandle, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetEndOfFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile

Siehe auch

Suche nach CreateFile in der MSDN Bibliothek.

Beispiel

#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>

Global $sTempFile, $hFile, $sText, $nBytes, $tBuffer, $iSize

; 1) Erstellt eine Datei und schreibt Daten hinein
$sTempFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sTempFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_CloseHandle($hFile)
; Ausgabe in die Konsole
ConsoleWrite('1):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

; 2) liest 6 Bytes ab Position 3
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sTempFile, 2, 2)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
; Ausgabe in die Konsole
ConsoleWrite('2):' & $iSize & ' ' & $sText & @CRLF)

; 3) Schreibt die vorher gelesenen 6 Bytes an die gleiche Position, aber in Großbuchstaben
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sTempFile, 2, 4)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
; Ausgabe in die Konsole
ConsoleWrite('3):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

; 4) kürze die Dateigröße auf 12 Bytes
$hFile = _WinAPI_CreateFile($sTempFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_CloseHandle($hFile)
; Ausgabe in die Konsole
ConsoleWrite('4):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

FileDelete($sTempFile)