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