Функция NtQuerySecurityObject (ntifs.h)
Подпрограмма NtQuerySecurityObject извлекает копию дескриптора безопасности объекта.
Синтаксис
__kernel_entry NTSYSCALLAPI NTSTATUS NtQuerySecurityObject(
[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
Выделенный вызывающим объектом буфер, который NtQuerySecurityObject заполняет копией указанного дескриптора безопасности. Структура SECURITY_DESCRIPTOR возвращается в самостоятельном формате.
[in] Length
Размер буфера, на который указывает SecurityDescriptor, в байтах.
[out] LengthNeeded
Указатель на переменную, выделенную вызывающим объектом, которая получает количество байтов, необходимое для хранения скопированного дескриптора безопасности.
Возвращаемое значение
NtQuerySecurityObject возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Возможные коды состояния ошибок:
Код возврата | Описание |
---|---|
STATUS_ACCESS_DENIED | У дескриптора не было необходимого доступа. |
STATUS_BUFFER_TOO_SMALL | Буфер слишком мал для дескриптора безопасности. Ни одна из сведений о безопасности не была скопирована в буфер. |
STATUS_INVALID_HANDLE | Дескриптор не является допустимым дескриптором. |
STATUS_OBJECT_TYPE_MISMATCH | Дескриптор не является дескриптором ожидаемого типа. |
Комментарии
Минифильтры должны вызывать FltQuerySecurityObject.
Дескриптор безопасности может иметь абсолютную или самостоятельную форму. В относительной форме все члены структуры расположены в памяти непрерывно. В абсолютной форме структура содержит только указатели на члены. Дополнительные сведения см. в разделе Абсолютные и Self-Relative дескрипторы безопасности.
Файловая система NTFS накладывает ограничение в 64 КБ на размер дескриптора безопасности, записываемого на диск для файла. (Файловая система FAT не поддерживает дескрипторы безопасности для файлов.) Таким образом, буфер SecurityDescriptor размером 64 КБ гарантированно будет достаточно большим, чтобы вместить возвращаемую SECURITY_DESCRIPTOR структуру.
Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и в документации по этим темам в windows SDK.
Примечание
Если вызов функции NtQuerySecurityObject происходит в пользовательском режиме, следует использовать имя 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, PowerIrpDDis |