Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Öffnet eine vorhandene Datei, ein Gerät, ein Verzeichnis oder ein Volume und gibt ein Handle für das Dateiobjekt zurück.
Diese Funktion entspricht der im Windows Driver Kit (WDK) dokumentierten ZwOpenFile-Funktion .
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
);
Die Parameter
[out] FileHandle
Ein Zeiger auf ein Handle für die geöffnete Datei. Der Treiber muss den Handle mit ZwClose schließen, sobald der Handle nicht mehr verwendet wird.
[in] DesiredAccess
Der ACCESS_MASK Wert, der die vom Aufrufer gewünschten Dateizugriffstypen ausdrückt. 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 das attribut OBJ_KERNEL_HANDLE für ObjectAttributes festgelegt werden. Weitere Informationen zum Angeben von Objektattributen finden Sie im CreateOptions-Parameter von ZwCreateFile im WDK.
[out] IoStatusBlock
Ein Zeiger auf eine Struktur, die Informationen über den angeforderten Vorgang und den endgültigen Abschlussstatus enthält.
[in] ShareAccess
Der Typ des Freigabezugriffs für die Datei. Weitere Informationen finden Sie unter "ZwCreateFile " im WDK.
[in] OpenOptions
Die Beim Öffnen der Datei anzuwendenden Optionen. Weitere Informationen finden Sie unter "ZwCreateFile " im WDK.
Rückgabewert
NtOpenFile gibt entweder STATUS_SUCCESS oder einen geeigneten Fehlerstatus zurück. Wenn ein Fehlerstatus zurückgegeben wird, kann der Aufrufer zusätzliche Informationen zur Ursache des Fehlers finden, indem er ioStatusBlock überprüft.
Bemerkungen
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 über den Prozess, in dem der Treiber ausgeführt wird, auf das Handle zugegriffen werden kann. 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 erforderlich ist. Sie können auch die Funktionen LoadLibrary und GetProcAddress verwenden, um dynamisch mit Ntdll.dllzu verknüpfen.
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform- | Fenster |
| Header | winternl.h |
| Library | ntdll.lib |
| DLL | ntdll.dll |