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

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

Синтаксис

NTSTATUS SeSetSecurityDescriptorInfo(
  [in, optional] PVOID                 Object,
  [in]           PSECURITY_INFORMATION SecurityInformation,
                 PSECURITY_DESCRIPTOR  ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR  *ObjectsSecurityDescriptor,
  [in]           POOL_TYPE             PoolType,
  [in]           PGENERIC_MAPPING      GenericMapping
);

Параметры

[in, optional] Object

Указатель на объект, дескриптор безопасности которого необходимо задать. Используется для обновления сведений о квотах безопасности.

[in] SecurityInformation

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

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

ModificationDescriptor

Дескриптор безопасности входных данных, применяемый к объекту . Предполагается, что вызывающий объект этой подпрограммы проверит и зафиксировать переданный дескриптор безопасности перед вызовом SeSetSecurityDescriptorInfo, а затем отпустит его.

[in, out] ObjectsSecurityDescriptor

Указатель на указатель на дескриптор безопасности объекта. Дескриптор безопасности должен иметь самостоятельный формат. Вызывающий объект отвечает за освобождение этой структуры, когда она больше не нужна.

[in] PoolType

Указывает тип пула, используемый при выделении нового дескриптора безопасности, который может быть одним из следующих:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

Обычно вызывающий объект указывает PagedPool или NonPagedPool , если доступ к буферу будет осуществляться в IRQL >= DISPATCH_LEVEL или в произвольном контексте потока.

Типы пулов NonPagedPoolMustSucceed и NonPagedPoolCacheAlignedMustS являются устаревшими и больше не должны использоваться.

[in] GenericMapping

Указатель на структуру GENERIC_MAPPING, задающую сопоставление универсального типа с конкретными и стандартными типами доступа для объекта, к которому осуществляется доступ. Предполагается, что эта структура сопоставления будет безопасной для доступа (т. е. захватывается при необходимости) перед передачей в эту подпрограмму.

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

Код возврата Описание
STATUS_SUCCESS Дескриптор безопасности объекта успешно изменен.
STATUS_BAD_DESCRIPTOR_FORMAT Дескриптор безопасности предоставленного объекта не был в самособлагающем формате.
STATUS_NO_SECURITY_ON_OBJECT Объект не имеет дескриптора безопасности.

Комментарии

SeSetSecurityDescriptorInfo изменяет существующий дескриптор безопасности объекта. Если у объекта нет дескриптора безопасности, вызов SeSetSecurityDescriptorInfo завершится ошибкой .

Чтобы указать, поддерживает ли объект автоматическое наследование записей управления доступом (ACE), используйте SeSetSecurityDescriptorInfoEx.

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

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

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

ACE

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetAccessStateGenericMapping

SeSetSecurityDescriptorInfoEx