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,否则如果缓冲区在 IRQL >= DISPATCH_LEVEL 或任意线程上下文中访问,则 NonPagedPool

NonPagedPoolMustSucceedNonPagedPoolCacheAlignedMustS 池类型已过时,不应再使用。

[in] GenericMapping

指向GENERIC_MAPPING结构的指针,该结构指定所访问对象的泛型到特定和标准访问类型的映射。 在传递到此例程之前,此映射结构应是安全的访问(即,如有必要捕获)。

返回值

返回代码 描述
STATUS_SUCCESS 已成功修改对象的安全描述符。
STATUS_BAD_DESCRIPTOR_FORMAT 提供的对象的安全描述符不采用相对格式。
STATUS_NO_SECURITY_ON_OBJECT 该对象没有安全描述符。

言论

SeSetSecurityDescriptorInfo 修改对象的现有安全描述符。 如果对象没有安全描述符,则调用 SeSetSecurityDescriptorInfo 将失败。

若要指定对象是否支持自动继承访问控制项(ACE),请使用 SeSetSecurityDescriptorInfoEx

安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都连续位于内存中。 在绝对形式中,结构仅包含指向成员的指针。

有关安全和访问控制的详细信息,请参阅适用于驱动程序开发人员 Windows 安全模型,以及有关 Windows SDK 中这些主题的文档。

要求

要求 价值
目标平台 普遍
标头 ntifs.h (include 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