RtlAddAccessAllowedAceEx 函数 (ntifs.h)

RtlAddAccessAllowedAceEx 例程将具有继承 ACE 标志 (ACE ) 允许访问的访问控制项添加到访问控制列表 (ACL) 。 向指定的安全标识符授予访问权限, (SID) 。

语法

NTSYSAPI NTSTATUS RtlAddAccessAllowedAceEx(
  [in, out] PACL        Acl,
  [in]      ULONG       AceRevision,
  [in]      ULONG       AceFlags,
  [in]      ACCESS_MASK AccessMask,
  [in]      PSID        Sid
);

参数

[in, out] Acl

指向调用方分配的缓冲区的指针,该缓冲区包含要修改的 ACL。 RtlAddAccessAllowedAceEx 将允许访问的 ACE 添加到此 ACL 的末尾。 ACE 采用 ACCESS_ALLOWED_ACE 结构的形式。

[in] AceRevision

要添加的 ACE 的 ACL 修订级别。 此值可以是ACL_REVISION或ACL_REVISION_DS。 如果 ACL 包含特定于对象的 ACE,则必须对其进行ACL_REVISION_DS。

[in] AceFlags

指定要添加的 ACE 的继承标志的位掩码。

[in] AccessMask

一个或多个 ACCESS_MASK 标志的位掩码,这些标志指定要授予指定 SID 的访问权限。 有关详细信息,请参阅 ZwCreateFileDesiredAccess 参数的说明。

[in] Sid

指向 SID 结构的指针,该结构表示正在被授予访问权限的用户、组或登录帐户。

返回值

RtlAddAccessAllowedAceEx 可以返回以下值之一:

返回代码 说明
STATUS_SUCCESS 已成功添加 ACE。
STATUS_ALLOTTED_SPACE_EXCEEDED 新的 ACE 不适合 ACL。 需要更大的 ACL 缓冲区。 有关如何计算 ACL 大小的详细信息,请参阅 RtlCreateAcl
STATUS_INVALID_ACL 指定的 ACL 格式不正确。
STATUS_INVALID_PARAMETER AceFlags 参数无效。
STATUS_INVALID_SID 指定的 SID 结构在结构上无效。
STATUS_REVISION_MISMATCH 指定的 AceRevision 未知或与 ACL 的 Acl 不兼容。

注解

RtlAddAccessAllowedAce 不同,此例程设置继承 ACE 标志。

有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 和 Windows SDK 中有关这些主题的文档,例如:

要求

要求
最低受支持的客户端 Windows 2000
目标平台 通用
标头 ntifs.h (包括 Ntifs.h、FltKernel.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

ACCESS_ALLOWED_ACE

ACCESS_MASK

Ace

ACL

RtlCreateAcl

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SID

SeAssignSecurity

ZwCreateFile