Функция ZwQuerySecurityObject (ntifs.h)
Подпрограмма ZwQuerySecurityObject извлекает копию дескриптора безопасности объекта.
Синтаксис
NTSYSAPI NTSTATUS ZwQuerySecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG Length,
[out] PULONG LengthNeeded
);
Параметры
[in] Handle
Дескриптор для объекта, дескриптор безопасности которого требуется запросить. Этот дескриптор должен иметь доступ, указанный в столбце Значение таблицы, показанной в описании параметра SecurityInformation .
[in] SecurityInformation
Значение SECURITY_INFORMATION , указывающее запрашиваемую информацию в виде сочетания одного или нескольких из следующих значений.
Значение | Значение |
---|---|
OWNER_SECURITY_INFORMATION | Запрашивается идентификатор владельца объекта. Требуется доступ READ_CONTROL. |
GROUP_SECURITY_INFORMATION | Запрашивается идентификатор основной группы объекта. Требуется доступ READ_CONTROL. |
SACL_SECURITY_INFORMATION | Выполняется запрос системного ACL (SACL) объекта. Требуется доступ ACCESS_SYSTEM_SECURITY. |
DACL_SECURITY_INFORMATION | Запрашивается дискреционный список управления доступом (DACL) объекта. Требуется доступ READ_CONTROL. |
[out] SecurityDescriptor
Выделенный вызывающим буфером, который ZwQuerySecurityObject заполняет копией указанного дескриптора безопасности. Структура SECURITY_DESCRIPTOR возвращается в само относительном формате.
[in] Length
Размер (в байтах) буфера, на который указывает SecurityDescriptor.
[out] LengthNeeded
Указатель на переменную, выделенную вызывающим объектом, которая получает количество байтов, необходимых для хранения скопированного дескриптора безопасности.
Возвращаемое значение
ZwQuerySecurityObject возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Возможные коды состояния ошибок:
Код возврата | Описание |
---|---|
STATUS_ACCESS_DENIED | У дескриптора не было необходимого доступа. |
STATUS_BUFFER_TOO_SMALL | Буфер слишком мал для дескриптора безопасности. Ни одна из сведений о безопасности не была скопирована в буфер. |
STATUS_INVALID_HANDLE | Дескриптор не является допустимым дескриптором. |
STATUS_OBJECT_TYPE_MISMATCH | Дескриптор не является дескриптором ожидаемого типа. |
Комментарии
Дескриптор безопасности может быть в абсолютной или относительной форме. В само относительной форме все члены структуры находятся в памяти непрерывно. В абсолютной форме структура содержит только указатели на члены. Дополнительные сведения см. в разделе Абсолютные и Self-Relative дескрипторы безопасности.
Файловая система NTFS накладывает ограничение в 64 КБ на размер дескриптора безопасности, записываемого на диск для файла. (Файловая система FAT не поддерживает дескрипторы безопасности для файлов.) Таким образом, буфер 64 КБ SecurityDescriptor гарантированно будет достаточно большим для хранения возвращаемой структуры SECURITY_DESCRIPTOR .
Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и в документации по этим темам в Windows SDK.
Минифильтры должны вызывать FltQuerySecurityObject вместо ZwQuerySecurityObject.
Примечание
Если вызов функции ZwQuerySecurityObject выполняется в пользовательском режиме, следует использовать имя NtQuerySecurityObject вместо ZwQuerySecurityObject.
Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |