IoGetDriverDirectory-Funktion (wdm.h)
Gibt ein Handle zu einem Verzeichnis auf dem Datenträger zurück, aus dem der Treiber Dateien lesen und schreiben kann. Die Dateien in diesem Verzeichnis gelten für ein bestimmtes Treiberobjekt.
Syntax
NTSTATUS IoGetDriverDirectory(
[_In_] PDRIVER_OBJECT DriverObject,
[_In_] DRIVER_DIRECTORY_TYPE DirectoryType,
[_In_] ULONG Flags,
[_Out_] PHANDLE DriverDirectoryHandle
);
Parameter
[_In_] DriverObject
Ein Zeiger auf das Treiberobjekt (DRIVER_OBJECT Struktur) des aufrufenden Treibers.
[_In_] DirectoryType
Ein _DRIVER_DIRECTORY_TYPE-type-Wert, der den Typ des angeforderten Verzeichnisses angibt.
[_In_] Flags
Muss 0 sein.
[_Out_] DriverDirectoryHandle
Ein Zeiger auf eine Variable, die ein HANDLE für das angeforderte Treiberverzeichnis empfängt. Der Aufrufer darf null nicht übergeben.
Rückgabewert
Gibt einen geeigneten NTSTATUS-Wertzurück. Mögliche Werte sind:
Fehlercode | Beschreibung |
---|---|
STATUS_SUCCESS | Der Aufruf hat erfolgreich ein Handle für das angeforderte Treiberverzeichnis geöffnet. |
STATUS_INVALID_PARAMETER | Ein Eingabewert für diese Funktion ist ungültig. Beispielsweise ist DriverObject- oder DriverDirectoryHandle- NULL; Flags ist nicht 0. |
Bemerkungen
Wenn IoGetDriverDirectory- aufgerufen wird, bevor die erforderlichen Datenträger und Volumes gestartet wurden, öffnet die Funktion kein Handle und gibt einen Fehler zurück.
Treiber verwenden in der Regel ZwOpenFile- und ZwCreateFile- für den Zugriff auf/das Erstellen von Dateien. Einer der Parameter für diese Funktionen ist eine OBJECT_ATTRIBUTES Struktur, die den Objektnamen und ein Stammverzeichnis enthält. Wenn das Stammverzeichnis NULL ist, muss der Objektname ein vollqualifizierter Pfad sein. Wenn Sie jedoch ein Handle für das Stammverzeichnis angeben, muss der Objektname relativ zum Objekt (im Fall von Dateien, dem Verzeichnis) sein, das das Handle darstellt.
Nachdem der IoGetDriverDirectory Aufruf erfolgreich war, verwenden Sie das empfangene HANDLE als Stammverzeichnis in der OBJECT_ATTRIBUTES, die Sie an eine ZwOpenFile- und ZwCreateFile-übergeben.
Der Treiber muss ZwClose- aufrufen, um den empfangenen Handle zu schließen, wenn kein Zugriff mehr erforderlich ist.
Aufrufer von IoGetDriverDirectory- müssen unter IRQL = PASSIVE_LEVEL im Kontext eines Systemthreads ausgeführt werden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 1803 |
Header- | wdm.h |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | PASSIVE_LEVEL |