ZwSetSecurityObject 函数 (ntifs.h)

ZwSetSecurityObject 例程设置对象的安全状态。

语法

NTSYSAPI NTSTATUS ZwSetSecurityObject(
  [in] HANDLE               Handle,
  [in] SECURITY_INFORMATION SecurityInformation,
  [in] PSECURITY_DESCRIPTOR SecurityDescriptor
);

参数

[in] Handle

要设置其安全状态的对象句柄。 此句柄必须具有在 SecurityInformation 参数说明中显示的表的“含义”列中指定的访问权限。

[in] SecurityInformation

指定要设置的信息的 SECURITY_INFORMATION值。 可以是以下一个或多个值的组合。

价值 意义
DACL_SECURITY_INFORMATION 指示要设置对象的自由访问控制列表(DACL)。 需要WRITE_DAC访问权限。
GROUP_SECURITY_INFORMATION 指示要设置对象的主要组标识符。 需要WRITE_OWNER访问权限。
OWNER_SECURITY_INFORMATION 指示要设置对象的所有者标识符。 需要WRITE_OWNER访问权限。
SACL_SECURITY_INFORMATION 指示要设置对象的系统 ACL (SACL)。 需要ACCESS_SYSTEM_SECURITY访问权限。

[in] SecurityDescriptor

指向要为对象设置的安全描述符的指针。

返回值

ZwSetSecurityObject 返回STATUS_SUCCESS或适当的错误状态。 可能的错误状态代码包括:

返回代码 描述
STATUS_ACCESS_DENIED Handle 没有所需的访问权限。
STATUS_ACCESS_VIOLATION SecurityDescriptor 是 NULL 指针
STATUS_INSUFFICIENT_RESOURCES 无法捕获对象的安全描述符。
STATUS_INVALID_ACL 对象的安全描述符包含无效的 ACL。
STATUS_INVALID_HANDLE 句柄 不是有效的句柄。
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor 不指向有效的安全描述符。
STATUS_INVALID_SID 对象的安全描述符包含无效 SID
STATUS_OBJECT_TYPE_MISMATCH 句柄 不是预期类型的句柄。
STATUS_UNKNOWN_REVISION 对象的安全描述符的修订级别未知或不受支持。

言论

安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都连续位于内存中。 在绝对形式中,结构仅包含指向成员的指针。 有关详细信息,请参阅 Windows SDK 文档的安全部分中的“绝对和 Self-Relative 安全描述符”。

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

微型筛选器应使用 FltSetSecurityObject 而不是 ZwSetSecurityObject

ZwSetSecurityObject 的调用方必须在 IRQL = PASSIVE_LEVEL上运行,启用了特殊内核 APC

注意

如果在用户模式下调用 ZwSetSecurityObject 函数,则应使用名称“NtSetSecurityObject”而不是“ZwSetSecurityObject”。

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
最低支持的客户端 Windows XP
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL(请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

使用本机系统服务例程的 Nt 和 Zw 版本

ZwQuerySecurityObject