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

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

FltQuerySecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

ZwSetSecurityObject