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


Функция 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 HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

использование версий собственных системных служб и Zw

ZwQuerySecurityObject