Freigeben über


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