IoGetDeviceDirectory-Funktion (wdm.h)

Gibt ein Handle für ein Verzeichnis auf dem Datenträger zurück, in dem Treiber Dateien speichern können. Die Dateien in diesem Verzeichnis gelten für ein bestimmtes Gerät instance.

Syntax

NTSTATUS IoGetDeviceDirectory(
  [_In_]  PDEVICE_OBJECT        PhysicalDeviceObject,
  [_In_]  DEVICE_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_In_]  PVOID                 Reserved,
  [_Out_] PHANDLE               DeviceDirectoryHandle
);

Parameter

[_In_] PhysicalDeviceObject

Ein Zeiger auf das objekt des physischen Geräts, das im Gerätestapel eines bestimmten Geräts instance abgefragt wird. Darf nicht NULL sein.

[_In_] DirectoryType

Ein _DEVICE_DIRECTORY_TYPE-Typwert, der den Typ des angeforderten Verzeichnisses angibt.

[_In_] Flags

Muss den Wert 0 (null) haben.

[_In_] Reserved

Reserviert. Muss NULL sein.

[_Out_] DeviceDirectoryHandle

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

Rückgabewert

Gibt einen geeigneten NTSTATUS-Wert zurück. Mögliche Werte sind:

Fehlercode BESCHREIBUNG
STATUS_SUCCESS Der Aufruf öffnete erfolgreich ein Handle für das angeforderte Geräteverzeichnis.
STATUS_INVALID_PARAMETER Ein Eingabewert für diese Funktion ist ungültig. Beispielsweise ist PhysicalDeviceObject oder DeviceDirectoryHandle NULL. Flags ist nicht 0; Reserviert ist nicht NULL.

Hinweise

Wenn IoGetDeviceDirectory 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 IoGetDeviceDirectory-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 das empfangene Handle zu schließen, wenn kein Zugriff mehr erforderlich ist.

Aufrufer von IoGetDeviceDirectory 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

ZwOpenFile

ZwCreateFile

ZwClose

_DEVICE_DIRECTORY_TYPE

OBJECT_ATTRIBUTES

InitializeObjectAttributes