Freigeben über


NtOpenFile-Funktion (winternl.h)

Ö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