Поделиться через


Функция 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

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

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

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

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

Замечания

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

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

После успешного вызова IoGetDriverDirectory используйте полученный ДЕСКРиптор в качестве корневого каталога в 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