Freigeben über


ZwOpenFile-Funktion (wdm.h)

Die ZwOpenFile-Routine öffnet eine vorhandene Datei, ein Verzeichnis, ein Gerät oder ein Volume.

Syntax

NTSYSAPI NTSTATUS ZwOpenFile(
  [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

Zeiger auf eine HANDLE-Variable, die ein Handle auf die Datei empfängt.

[in] DesiredAccess

Gibt einen ACCESS_MASK Wert an, der den angeforderten Zugriff auf das Objekt bestimmt. Weitere Informationen finden Sie im DesiredAccess-Parameter von ZwCreateFile.

[in] ObjectAttributes

Zeiger auf eine OBJECT_ATTRIBUTES-Struktur , die den Objektnamen und andere Attribute angibt. Verwenden Sie InitializeObjectAttributes , um diese Struktur zu initialisieren. Wenn der Aufrufer nicht in einem Systemthreadkontext ausgeführt wird, muss er das attribut OBJ_KERNEL_HANDLE festlegen, wenn initializeObjectAttributes aufgerufen wird.

[out] IoStatusBlock

Zeiger auf eine IO_STATUS_BLOCK-Struktur, die die endgültige Vervollständigung status und Informationen zum angeforderten Vorgang empfängt.

[in] ShareAccess

Gibt den Typ des Freigabezugriffs für die Datei an. Weitere Informationen finden Sie im ShareAccess-Parameter von ZwCreateFile.

[in] OpenOptions

Gibt die Optionen an, die beim Öffnen der Datei angewendet werden sollen. Weitere Informationen finden Sie im CreateOptions-Parameter von ZwCreateFile.

Rückgabewert

ZwOpenFile gibt STATUS_SUCCESS oder den entsprechenden NTSTATUS-Fehlercode zurück. Im letzteren Fall kann der Aufrufer weitere Informationen zur Ursache des Fehlers finden, indem er den IoStatusBlock-Parameter überprüft.

Hinweise

ZwOpenFile stellt ein Handle bereit, mit dem der Aufrufer die Daten einer Datei oder den Zustand und die Attribute des Dateiobjekts bearbeiten kann. ZwOpenFile stellt eine Teilmenge der von ZwCreateFile bereitgestellten Funktionen bereit. Weitere Informationen finden Sie unter Verwenden von Dateien in einem Treiber.

Sobald der von FileHandle angezeigte Handle nicht mehr verwendet wird, muss der Treiber ZwClose aufrufen, um ihn zu schließen.

Wenn der Aufrufer nicht in einem Systemthreadkontext ausgeführt wird, muss er sicherstellen, dass alle von dem Aufrufer erstellten Handles private Handles sind. Andernfalls kann der Prozess, in dessen Kontext der Treiber ausgeführt wird, auf das Handle zugreifen. Weitere Informationen finden Sie unter Objekthandles.

Aufrufer von ZwOpenFile müssen unter IRQL = PASSIVE_LEVEL und mit aktivierten speziellen Kernel-APCs ausgeführt werden.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtOpenFile" anstelle von "ZwOpenFile" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (siehe Abschnitt Hinweise)
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

ACCESS_MASK

InitializeObjectAttributes

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwCreateFile