Функция IoGetDriverDirectory (wdm.h)

Возвращает дескриптор каталога на диске, из которого драйвер может считывать и записывать файлы. Файлы в этом каталоге применяются к определенному объекту драйвера.

Синтаксис

NTSTATUS IoGetDriverDirectory(
  [_In_]  PDRIVER_OBJECT        DriverObject,
  [_In_]  DRIVER_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_Out_] PHANDLE               DriverDirectoryHandle
);

Параметры

[_In_] DriverObject

Указатель на объект драйвера (DRIVER_OBJECT структуру) вызывающего драйвера.

[_In_] DirectoryType

Значение типа _DRIVER_DIRECTORY_TYPE, указывающее тип запрошенного каталога.

[_In_] Flags

Должно быть равно 0.

[_Out_] DriverDirectoryHandle

Указатель на переменную, которая получает HANDLE для запрошенного каталога драйвера. Вызывающий объект не должен передавать значение NULL.

Возвращаемое значение

Возвращает соответствующее значение NTSTATUS. Возможные значения:

Код ошибки Описание
STATUS_SUCCESS Вызов успешно открыл дескриптор для запрошенного каталога драйвера.
STATUS_INVALID_PARAMETER Входное значение этой функции является недопустимым. Например, DriverObject или DriverDirectoryHandle имеет значение NULL; Флаги не равно 0.

Комментарии

Если IoGetDriverDirectory вызывается до запуска необходимых дисков и томов, функция не открывает дескриптор и возвращает ошибку.

Драйверы обычно используют ZwOpenFile и ZwCreateFile для доступа к файлам и их создания. Одним из параметров для этих функций является структура OBJECT_ATTRIBUTES , содержащая имя объекта и корневой каталог. Если корневой каталог имеет значение NULL, то имя объекта должно быть полным путем. Однако если предоставить дескриптор для корневого каталога, имя объекта должно быть относительно объекта (в случае файлов — каталога), который представляет дескриптор.

После успешного вызова IoGetDriverDirectory используйте полученный HANDLE в качестве корневого каталога в OBJECT_ATTRIBUTES , который передается в ZwOpenFile и ZwCreateFile.

Драйвер должен вызвать ZwClose , чтобы закрыть полученный дескриптор, если доступ больше не требуется.

Вызывающие объект IoGetDriverDirectory должны выполняться в среде IRQL = PASSIVE_LEVEL в контексте системного потока.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1803
Верхняя часть wdm.h
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также раздел

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes