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


Функция 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 или соответствующее состояние ошибки. Ниже приведены наиболее распространенные коды состояния ошибок:

Возвращаемый код Описание
STATUS_INSUFFICIENT_RESOURCES
Временный буфер, необходимый этой подпрограмме, не может быть выделен.
STATUS_INVALID_PARAMETER
Указанный параметр ObjectAttributes был указателем NULL, а не допустимым указателем на структуру OBJECT_ATTRIBUTES, или некоторые поля, указанные в структуре OBJECT_ATTRIBUTES, были недопустимыми.
STATUS_OBJECT_NAME_INVALID
Параметр objectAttributes содержал поле ObjectName в структуре OBJECT_ATTRIBUTES, которое было недопустимо, так как пустая строка была найдена после символа OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_NAME_NOT_FOUND
Параметр ObjectAttributes содержал поле ObjectName в структуре OBJECT_ATTRIBUTES, которое не удалось найти.
STATUS_OBJECT_PATH_NOT_FOUND
Параметр objectAttributes содержит поле ObjectName в структуре OBJECT_ATTRIBUTES с путьом к объекту, который не удалось найти.
STATUS_OBJECT_PATH_SYNTAX_BAD
Параметр objectAttributes не содержал поле RootDirectory, но поле ObjectName в структуре OBJECT_ATTRIBUTES было пустой строкой или не содержало OBJECT_NAME_PATH_SEPARATOR символа. Это означает неправильный синтаксис для пути объекта.
 

Подпрограмма ZwOpenDirectoryObject вызывает исключение, если параметр DirectoryHandle является недопустимым указателем.

Замечания

ZwOpenDirectoryObject открывает существующий объект каталога и возвращает дескриптор объекту.

Подпрограмма ZwOpenDirectoryObject вызывается после макроса InitializeObjectAttributes используется для инициализации определенных атрибутов структуры OBJECT_ATTRIBUTES для открытия объекта.

Объект каталога создается с помощью подпрограммы ZwCreateDirectoryObject . Любой дескриптор, полученный путем вызова ZwOpenDirectoryObject, должен в конечном итоге быть освобожден путем вызова ZwClose.

Дополнительные сведения о безопасности и управлении доступом см. в модели безопасности Windows для разработчиков драйверов и документации по этим разделам в пакете SDK для Windows.

Примечание Если вызов функции ZwCreateDirectoryObject происходит в пользовательском режиме, следует использовать имя "NtCreateDirectoryObj ect" вместо "ZwCreateDirectoryObject".
 
Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP
целевая платформа Всеобщий
заголовка ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также

ACCESS_MASK

ACL

InitializeObjectAttributes

использование версий собственных системных служб и Zw

ZwClose

ZwCreateDirectoryObject