Funktionreferenz


_WinAPI_CreateObjectID

Beschreibung anzeigen in

Erzeugt oder holt den Objektidentifizierer (ObjectID) für die angegebene Datei oder Verzeichnis.

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

Parameter

$sFilePath Der Pfad zur Datei oder Verzeichnis um einen Objektidentifizierer zu erstellen oder zu holen.

Rückgabewert

Erfolg: Die $tagGUID Struktur welche den Objektidentifizierer für die Datei oder das Verzeichnis beinhaltet in welchem Laufwerk diese liegt.
Fehler: Setzt das @error Flag auf ungleich null.

Bemerkungen

Wenn der Objektidentifizierer einer Datei oder Verzeichnis nicht bereits eins hat, so erzeugt die _WinAPI_CreateObjectID() Funktion diesen.
Wenn der Objektidentifizierer bereits existiert, so gibt die Funktion diesen zurück.

Siehe auch

Suche nach FSCTL_CREATE_OR_GET_OBJECT_ID in der MSDN Bibliothek.

Beispiel

#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(($MB_ICONERROR + $MB_SYSTEMMODAL), 'Error', 'Require Windows Vista or later.')
    Exit
EndIf

; Create temporary file
Local $sFile = _WinAPI_GetTempFileName(@TempDir)

; Create unique object ID for a file
Local $tGUID = _WinAPI_CreateObjectID($sFile)

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

; Open file by object ID and retrieve its full path
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('Path: ' & StringRegExpReplace($sFile, '\\+.\\', '') & @CRLF)

; Delete file
FileDelete($sFile)