Функция 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
Дополнительные сведения о безопасности и управлении доступом см. в модели безопасности 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 |