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


Функция NtSetSecurityObject (ntifs.h)

Подпрограмма ntSetSecurityObject задает состояние безопасности объекта.

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtSetSecurityObject(
  [in] HANDLE               Handle,
  [in] SECURITY_INFORMATION SecurityInformation,
  [in] PSECURITY_DESCRIPTOR SecurityDescriptor
);

Параметры

[in] Handle

Дескриптор объекта, состояние безопасности которого необходимо задать. Этот дескриптор должен иметь доступ, указанный в столбце "Значение" таблицы, показанной в описании параметра SecurityInformation.

[in] SecurityInformation

SECURITY_INFORMATION значение, указывающее сведения, которые необходимо задать в качестве сочетания одного или нескольких из следующих значений.

Ценность Значение
OWNER_SECURITY_INFORMATION Указывает, что идентификатор владельца объекта должен быть задан. Требуется WRITE_OWNER доступ.
GROUP_SECURITY_INFORMATION Указывает, что необходимо задать идентификатор основной группы объекта. Требуется WRITE_OWNER доступ.
SACL_SECURITY_INFORMATION Указывает, что необходимо задать системный ACL (SACL) объекта. Требуется ACCESS_SYSTEM_SECURITY доступ.
DACL_SECURITY_INFORMATION Указывает, что необходимо задать список управления доступом (DACL) объекта. Требуется WRITE_DAC доступ.

[in] SecurityDescriptor

Указатель на дескриптор безопасности для объекта.

Возвращаемое значение

NtSetSecurityObject возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Возможные коды состояния ошибок включают следующие:

Возвращаемый код Описание
STATUS_ACCESS_DENIED Вызывающий объект не получил необходимый доступ.
STATUS_ACCESS_VIOLATION SecurityDescriptor был указателем NULL.
STATUS_INSUFFICIENT_RESOURCES Дескриптор безопасности объекта не удалось записать.
STATUS_INVALID_ACL Дескриптор безопасности объекта содержал недопустимый ACL.
STATUS_INVALID_HANDLE Дескриптор не является допустимым дескриптором.
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor не указывал на допустимый дескриптор безопасности.
STATUS_INVALID_SID Дескриптор безопасности объекта содержал недопустимый идентификатор безопасности.
STATUS_OBJECT_TYPE_MISMATCH Дескриптор не является дескриптором ожидаемого типа.
STATUS_UNKNOWN_REVISION Уровень редакции дескриптора безопасности объекта был неизвестен или не поддерживается.

Замечания

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

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

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

Вызовы NtSetSecurityObject должны выполняться в IRQL = PASSIVE_LEVEL и с поддержкой специальных API ядра.

Заметка

Если вызов функции NtSetSecurityObject происходит в пользовательском режиме, следует использовать имя "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 HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

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

NtQuerySecurityObject

ZwSetSecurityObject