NtOpenFile-Funktion (winternl.h)
Öffnet eine vorhandene Datei, ein vorhandenes Gerät, ein Verzeichnis oder ein Volume und gibt ein Handle für das Dateiobjekt zurück.
Diese Funktion entspricht der ZwOpenFile-Funktion , die im Windows Driver Kit (WDK) dokumentiert ist.
Syntax
__kernel_entry NTSTATUS NtOpenFile(
[out] PHANDLE FileHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG ShareAccess,
[in] ULONG OpenOptions
);
Parameter
[out] FileHandle
Ein Zeiger auf ein Handle für die geöffnete Datei. Der Treiber muss das Handle mit ZwClose schließen, sobald das Handle nicht mehr verwendet wird.
[in] DesiredAccess
Der ACCESS_MASK Wert, der die vom Aufrufer gewünschten Dateizugriffstypen angibt. Informationen zu den Zugriffstypen, die angegeben werden können, finden Sie unter ZwCreateFile im WDK.
[in] ObjectAttributes
Ein Zeiger auf eine Struktur, die ein Aufrufer mit InitializeObjectAttributes initialisiert. Wenn der Aufrufer nicht im Systemprozesskontext ausgeführt wird, muss er das attribut OBJ_KERNEL_HANDLE für ObjectAttributes festlegen. Weitere Informationen zum Angeben von Objektattributen finden Sie im WDK im CreateOptions-Parameter von ZwCreateFile .
[out] IoStatusBlock
Ein Zeiger auf eine Struktur, die Informationen zum angeforderten Vorgang und zum abschluss status enthält.
[in] ShareAccess
Der Typ des Freigabezugriffs für die Datei. Weitere Informationen finden Sie unter ZwCreateFile im WDK.
[in] OpenOptions
Die Optionen, die beim Öffnen der Datei angewendet werden sollen. Weitere Informationen finden Sie unter ZwCreateFile im WDK.
Rückgabewert
NtOpenFile gibt entweder STATUS_SUCCESS oder einen geeigneten Fehler status zurück. Wenn ein Fehler status zurückgegeben wird, kann der Aufrufer zusätzliche Informationen zur Ursache des Fehlers finden, indem er den IoStatusBlock überprüft.
Hinweise
Treiberroutinen, die in einem anderen Prozesskontext als dem des Systemprozesses ausgeführt werden, müssen das attribut OBJ_KERNEL_HANDLE für den ObjectAttributes-Parameter von ZwOpenFile festlegen. Dadurch wird die Verwendung des von ZwOpenFile zurückgegebenen Handles auf Prozesse beschränkt, die nur im Kernelmodus ausgeführt werden. Andernfalls kann der Prozess, in dessen Kontext der Treiber ausgeführt wird, auf das Handle zugreifen. Treiber können InitializeObjectAttributes aufrufen, um das attribut OBJ_KERNEL_HANDLE wie folgt festzulegen.
InitializeObjectAttributes(&ObjectAddributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
Aufrufer von ZwCreateFile müssen unter IRQL = PASSIVE_LEVEL ausgeführt werden.
Beachten Sie, dass die WDK-Headerdatei Ntdef.h für viele Konstantendefinitionen sowie für das InitializeObjectAttributes-Makro erforderlich ist. Sie können auch die Funktionen LoadLibrary und GetProcAddress verwenden, um dynamisch mit Ntdll.dll zu verknüpfen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | winternl.h |
Bibliothek | ntdll.lib |
DLL | ntdll.dll |