Функция 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 Дескриптор не имеет необходимых прав доступа.
STATUS_ACCESS_VIOLATION SecurityDescriptor является указателем NULL .
STATUS_INSUFFICIENT_RESOURCES Не удалось записать дескриптор безопасности объекта.
STATUS_INVALID_ACL Дескриптор безопасности объекта содержит недопустимый список управления доступом.
STATUS_INVALID_HANDLE Дескриптор не является допустимым дескриптором.
STATUS_INVALID_SECURITY_DESCR Дескриптор безопасности не указывает на допустимый дескриптор безопасности.
STATUS_INVALID_SID Дескриптор безопасности объекта содержит недопустимый идентификатор безопасности.
STATUS_OBJECT_TYPE_MISMATCH Дескриптор не является дескриптором ожидаемого типа.
STATUS_UNKNOWN_REVISION Уровень редакции дескриптора безопасности объекта неизвестен или не поддерживается.

Комментарии

Дескриптор безопасности может быть в абсолютной или относительной форме. В само относительной форме все члены структуры находятся в памяти непрерывно. В абсолютной форме структура содержит только указатели на члены. Дополнительные сведения см. в разделе "Абсолютные и Self-Relative дескрипторы безопасности" в разделе Безопасность документации по Windows SDK.

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

Минифильтры должны использовать FltSetSecurityObject вместо ZwSetSecurityObject.

Вызывающие объекты ZwSetSecurityObject должны выполняться в IRQL = PASSIVE_LEVEL и с включенными специальными APC ядра.

Примечание

Если вызов функции ZwSetSecurityObject выполняется в пользовательском режиме, следует использовать имя NtSetSecurityObject вместо ZwSetSecurityObject.

Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

Требование Значение
Минимальная версия клиента Windows XP
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

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

ZwQuerySecurityObject