Freigeben über


IoGetDriverDirectory-Funktion (wdm.h)

Gibt ein Handle in ein 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 den Wert 0 (null) haben.

[_Out_] DriverDirectoryHandle

Ein Zeiger auf eine Variable, die ein HANDLE auf das angeforderte Treiberverzeichnis empfängt. Der Aufrufer darf NULL nicht übergeben.

Rückgabewert

Gibt einen entsprechenden NTSTATUS-Wert zurü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.

Hinweise

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 , um auf Dateien zuzugreifen bzw. diese zu erstellen. 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 bereitstellen, muss der Objektname relativ zum Objekt (im Fall von Dateien das Verzeichnis) sein, das das Handle darstellt.

Nachdem der IoGetDriverDirectory-Aufruf erfolgreich war, verwenden Sie den empfangenen HANDLE als Stammverzeichnis in der OBJECT_ATTRIBUTES , die Sie an ZwOpenFile und ZwCreateFile übergeben.

Der Treiber muss ZwClose aufrufen, um das empfangene 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
Unterstützte Mindestversion (Client) Windows 10, Version 1803
Kopfzeile wdm.h
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes