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。
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 (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
另请参阅
RtlCreateSecurityDescriptorRelative