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


Функция 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 накладывает ограничение на размер дескриптора безопасности, записываемого на диск для файла. (Файловая система FAT не поддерживает дескрипторы безопасности для файлов.) Таким образом, буфер securityDescriptor SecurityDescriptor гарантируется достаточно большим, чтобы сохранить возвращенную SECURITY_DESCRIPTOR структуру.

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

Минифильтры должны вызывать FltQuerySecurityObject вместо ZwQuerySecurityObject.

Заметка

Если вызов функции ZwQuerySecurityObject происходит в пользовательском режиме, следует использовать имя "NtQuerySecurityObject" вместо "ZwQuerySecurityObject".

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

Требования

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

См. также

FltQuerySecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

ZwSetSecurityObject