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 |