Функция ZwOpenDirectoryObject (ntifs.h)
Подпрограмма ZwOpenDirectoryObject открывает существующий объект каталога.
Синтаксис
NTSYSAPI NTSTATUS ZwOpenDirectoryObject(
[out] PHANDLE DirectoryHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes
);
Параметры
[out] DirectoryHandle
Дескриптор для вновь открытого объекта каталога.
[in] DesiredAccess
Структура ACCESS_MASK , указывающая запрашиваемые типы доступа для этого объекта каталога. Вызывающий объект может указать один из следующих элементов или их комбинацию.
DesiredAccess Флаги | Значение |
---|---|
DIRECTORY_QUERY | Запрос доступа к объекту каталога |
DIRECTORY_TRAVERSE | Доступ подстановки имени к объекту каталога |
DIRECTORY_CREATE_OBJECT | Доступ к объекту каталога при создании имени |
DIRECTORY_CREATE_SUBDIRECTORY | Доступ к объекту каталога при создании подкаталога |
DIRECTORY_ALL_ACCESS | Все указанные выше права и STANDARD_RIGHTS_REQUIRED. |
Эти запрошенные типы доступа сравниваются со списком управления доступом (DACL) объекта, чтобы определить, какие доступы предоставляются или запрещаются.
[in] ObjectAttributes
Указанные атрибуты для объекта каталога, предоставленного вызывающим объектом. Этот параметр инициализируется путем вызова макроса InitializeObjectAttributes .
Возвращаемое значение
ZwOpenDirectoryObject возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Ниже перечислены наиболее распространенные коды состояния ошибок.
Код возврата | Описание |
---|---|
|
Не удалось выделить временный буфер, необходимый для этой подпрограммы. |
|
Указанный параметр ObjectAttributes был указателем NULL , а не допустимым указателем на структуру OBJECT_ATTRIBUTES , или некоторые поля, указанные в структуре OBJECT_ATTRIBUTES, были недопустимыми. |
|
Параметр ObjectAttributes содержал поле ObjectName в структуре OBJECT_ATTRIBUTES , которое было недопустимо, так как после символа OBJECT_NAME_PATH_SEPARATOR была найдена пустая строка. |
|
Параметр ObjectAttributes содержал поле ObjectName в структуре OBJECT_ATTRIBUTES , которое не удалось найти. |
|
Параметр ObjectAttributes содержал поле ObjectName в структуре OBJECT_ATTRIBUTES с не удалось найти путь к объекту. |
|
Параметр ObjectAttributes не содержал поле RootDirectory , но поле ObjectName в структуре OBJECT_ATTRIBUTES было пустой строкой или не содержало символ OBJECT_NAME_PATH_SEPARATOR. Это указывает на неправильный синтаксис пути к объекту. |
Подпрограмма ZwOpenDirectoryObject создает исключение, если параметр DirectoryHandle является недопустимым указателем.
Комментарии
ZwOpenDirectoryObject открывает существующий объект каталога и возвращает дескриптор для объекта .
Подпрограмма ZwOpenDirectoryObject вызывается после макроса InitializeObjectAttributes , используемого для инициализации определенных атрибутов структуры OBJECT_ATTRIBUTES для открываемого объекта.
Объект каталога создается с помощью подпрограммы ZwCreateDirectoryObject. Любой дескриптор, полученный путем вызова ZwOpenDirectoryObject, в конечном итоге должен быть освобожден путем вызова ZwClose.
Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и в документации по этим темам в windows SDK.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntdef.h, Ntifs.h, Fltkernel.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
См. также раздел
Использование версий Nt и Zw собственных процедур системных служб
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по