Freigeben über


NtOpenFile-Funktion (ntifs.h)

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

Syntax

__kernel_entry NTSYSCALLAPI 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

Zeiger auf eine HANDLE-Variable, die ein Handle für 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 NtCreateFile.

[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 den endgültigen Abschluss 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 NtCreateFile.

[in] OpenOptions

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

Rückgabewert

NtOpenFile 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

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

Sobald das Handle, auf das von FileHandle verwiesen wird, nicht mehr verwendet wird, muss der Treiber NtClose aufrufen, um es zu schließen.

Wenn der Aufrufer nicht in einem Systemthreadkontext ausgeführt wird, muss sichergestellt werden, dass es sich bei allen von ihr erstellten Handles um private Handles handelt. Andernfalls kann der Prozess, in dessen Kontext der Treiber ausgeführt wird, auf das Handle zugreifen. Weitere Informationen finden Sie unter Objekthandles.

Aufrufer von NtOpenFile 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, wie 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 systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000
Zielplattform Universell
Header ntifs.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln HwStorPortProhibitedDIs, PowerIrpDDis

Weitere Informationen

ACCESS_MASK

InitializeObjectAttributes

NtClose

NtCreateFile