UDF > WinAPIEx > Files & Devices > Files >


_WinAPI_CreateFile

Crée ou ouvre un fichier ou un autre périphérique

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

Paramètres

$sFileName Nom de l'objet à créer ou ouvrir
$iCreation Action à entreprendre sur les fichiers qui existent et n'existent pas :
    0 - Crée un nouveau fichier. La fonction échoue si le fichier existe
    1 - Crée un nouveau fichier. Si un fichier existe, il est écrasé
    2 - Ouvre un fichier. La fonction échoue si le fichier n'existe pas
    3 - Ouvre un fichier. Si le fichier n'existe pas, la fonction crée le fichier
    4 - Ouvre un fichier et supprime son contenu pour que sa taille soit 0 octet. La fonction échoue si le fichier n'existe pas.
$iAccess [optionnel] Type d'accès à l'objet :
    1 - Exécution
    2 - Lecture
    4 - Écriture
$iShare [optionnel] Mode de partage d'un objet :
    1 - Suppression
    2 - Lecture
    4 - Écriture
$iAttributes [optionnel] Les attributs du fichier:
    1 - Le fichier doit être archivé
    2 - Le fichier est caché
    4 - Le fichier est en lecture seule
    8 - Dossier fait partie du système d'exploitation ou est utilisé exclusivement par lui.
$tSecurity [optionnel] Structure $tagSECURITY_ATTRIBUTES (ou un pointeur sur une telle structure) pour déterminer si le handle retourné peut être hérité par les processus enfants.
Si $tSecurity est 0, le handle ne peut pas être héritée.

Valeur de retour

Succès: Retourne le handle ouvert du fichier spécifié
Échec: Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur

En relation

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

Voir aussi

Consultez CreateFile dans la librairie MSDN.

Exemple

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

Local $sFile, $hFile, $sText, $nBytes, $tBuffer

; 1) Crée un fichier et écrit des données
$sFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('1) '& FileRead($sFile) & @CRLF)

; 2) Lit 6 octets à partir de la position 3
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sFile, 2, 2)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
ConsoleWrite('2) '& $sText & @CRLF)

; 3) Ecrit les 6 octets déjà lus à la position 3 à la même position, mais en majuscules
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
ConsoleWrite('3) '& FileRead($sFile) & @CRLF)

; 4) Tronque la taille du fichier à 12 octets
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('4) '& FileRead($sFile) & @CRLF)

FileDelete($sFile)