Функция ZwSetSecurityObject (ntifs.h)
Подпрограмма ZwSetSecurityObject задает состояние безопасности объекта.
Синтаксис
NTSYSAPI NTSTATUS ZwSetSecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor
);
Параметры
[in] Handle
Дескриптор объекта, состояние безопасности которого необходимо задать. Этот дескриптор должен иметь доступ, указанный в столбце "Значение" таблицы, показанной в описании параметра SecurityInformation.
[in] SecurityInformation
Значение SECURITY_INFORMATION, указывающее заданные сведения. Может быть сочетанием одного или нескольких следующих значений.
Ценность | Значение |
---|---|
DACL_SECURITY_INFORMATION | Указывает, что необходимо задать список управления доступом (DACL) объекта. Требуется WRITE_DAC доступ. |
GROUP_SECURITY_INFORMATION | Указывает, что необходимо задать идентификатор основной группы объекта. Требуется WRITE_OWNER доступ. |
OWNER_SECURITY_INFORMATION | Указывает, что идентификатор владельца объекта должен быть задан. Требуется WRITE_OWNER доступ. |
SACL_SECURITY_INFORMATION | Указывает, что необходимо задать системный ACL (SACL) объекта. Требуется ACCESS_SYSTEM_SECURITY доступ. |
[in] SecurityDescriptor
Указатель на дескриптор безопасности для объекта.
Возвращаемое значение
ZwSetSecurityObject возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Возможные коды состояния ошибок включают следующие:
Возвращаемый код | Описание |
---|---|
STATUS_ACCESS_DENIED | Handle не имеет необходимых прав доступа. |
STATUS_ACCESS_VIOLATION | SecurityDescriptor — это указатель NULL. |
STATUS_INSUFFICIENT_RESOURCES | Дескриптор безопасности объекта не удалось записать. |
STATUS_INVALID_ACL | Дескриптор безопасности объекта содержит недопустимый ACL. |
STATUS_INVALID_HANDLE | Дескриптор не является допустимым дескриптором. |
STATUS_INVALID_SECURITY_DESCR | SecurityDescriptor не указывает на допустимый дескриптор безопасности. |
STATUS_INVALID_SID | Дескриптор безопасности объекта содержит недопустимый sid. |
STATUS_OBJECT_TYPE_MISMATCH | Дескриптор не является дескриптором ожидаемого типа. |
STATUS_UNKNOWN_REVISION | Уровень редакции дескриптора безопасности объекта неизвестен или не поддерживается. |
Замечания
Дескриптор безопасности может находиться в абсолютной или относительной форме. В самостоятельной форме все члены структуры находятся в памяти. В абсолютной форме структура содержит только указатели на элементы. Дополнительные сведения см. в разделе "Абсолютные и Self-Relative дескрипторы безопасности" в разделе "Безопасность" документации по пакету SDK для Windows.
Дополнительные сведения о безопасности и управлении доступом см. в модели безопасности Windows для разработчиков драйверов и документации по этим разделам в пакете SDK для Windows.
Минифильтры должны использовать FltSetSecurityObject вместо ZwSetSecurityObject.
Вызывающие ZwSetSecurityObject должны выполняться в IRQL = PASSIVE_LEVEL и со специальными API-интерфейсами ядра, включенными.
Заметка
Если вызов функции ZwSetSecurityObject происходит в пользовательском режиме, следует использовать имя "NtSetSecurityObject" вместо "ZwSetSecurityObject".
Для вызовов драйверов в режиме ядра 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 |
См. также
использование версий собственных системных служб и Zw