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


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

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

Заметка

Если вызов функции NtQuerySecurityObject происходит в пользовательском режиме, следует использовать имя "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 HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

FltQuerySecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

NtSetSecurityObject