UDF > WinAPIEx > Files & Devices > DevicesIoCtl >


_WinAPI_CreateObjectID

Crée ou obtient l'identifiant d'objet pour un fichier ou un répertoire spécifié

#include <WinAPIFiles.au3>
_WinAPI_CreateObjectID ( $sFilePath )

Paramètre

$sFilePath Chemin du fichier ou du répertoire à créer ou dont il faut obtenir l'identifiant de l'objet.

Valeur de retour

Succès: Retourne la structure $tagGUID qui contient l'identifiant d'objet pour le fichier ou le répertoire dans le volume sur lequel il réside.
Échec: Définit @error <> 0.

Remarque

Si l'identifiant d'objet du fichier ou du répertoire n'en possède pas déjà un, _WinAPI_CreateObjectID() le crée.
Si l'identifiant de l'objet existe déjà, la fonction retourne tout simplement.

Voir aussi

Consultez FSCTL_CREATE_OR_GET_OBJECT_ID dans la librairie MSDN.

Exemple

#include <MsgBoxConstants.au3>
#include <WinAPIConv.au3>
#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>
#include <WinAPIShPath.au3>
#include <WinAPISys.au3>

If Number(_WinAPI_GetVersion()) < 6.0 Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Requiert Windows Vista ou une version ultérieure.')
    Exit
EndIf

; Crée un fichier temporaire
Local $sFile = _WinAPI_GetTempFileName(@TempDir)

; Crée un ID d'objet unique pour le fichier
Local $tGUID = _WinAPI_CreateObjectID($sFile)

ConsoleWrite('GUID: '& _WinAPI_StringFromGUID(DllStructGetPtr($tGUID)) & @CRLF)

; Ouvre le fichier par l'ID d'objet et obtient son chemin complet
Local $hFile = _WinAPI_OpenFileById(_WinAPI_PathStripToRoot(@TempDir), $tGUID, 0, BitOR($FILE_SHARE_DELETE, $FILE_SHARE_READ, $FILE_SHARE_WRITE))
$sFile = _WinAPI_GetFinalPathNameByHandleEx($hFile)
_WinAPI_CloseHandle($hFile)

ConsoleWrite('Chemin: '& StringRegExpReplace($sFile, '\\+.\\', '') & @CRLF)

; Supprime le fichier
FileDelete($sFile)