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 (包括 Ntifs.h)
Library 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