addConditionalAce 函数 (winbase.h)

AddConditionalAce 函数将 ACE) (条件访问控制项添加到指定的访问控制列表 (ACL) 。 条件 ACE 指定在访问检查期间评估的逻辑条件。

语法

BOOL AddConditionalAce(
  [in, out] PACL   pAcl,
  [in]      DWORD  dwAceRevision,
  [in]      DWORD  AceFlags,
  [in]      UCHAR  AceType,
  [in]      DWORD  AccessMask,
  [in]      PSID   pSid,
  [in]      PWCHAR ConditionStr,
  [out]     DWORD  *ReturnLength
);

参数

[in, out] pAcl

指向 ACL 的指针。 此函数将 ACE 添加到此 ACL。

此参数的值不能为 NULL

[in] dwAceRevision

指定要修改的 ACL 的修订级别。 此值可以ACL_REVISION或ACL_REVISION_DS。 如果 ACL 包含特定于对象的 ACE,请使用 ACL_REVISION_DS。

[in] AceFlags

一组控制 ACE 继承的位标志。 函数在新 ACE 的 ACE_HEADER 结构的 AceFlags 成员中设置这些标志。 此参数可以是以下值的组合。

含义
CONTAINER_INHERIT_ACE
ACE 由容器对象继承。
INHERIT_ONLY_ACE
ACE 不适用于分配了 ACL 的对象,但它可由子对象继承。
INHERITED_ACE
指示继承的 ACE。 此标志允许更改对象树上安全性的操作修改继承的 ACE,同时不更改直接应用于对象的 ACE。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE位和CONTAINER_INHERIT_ACE位不会传播到继承的 ACE。
OBJECT_INHERIT_ACE
ACE 由非容器对象继承。

[in] AceType

ACE 的类型。

这可以是以下值之一。

含义
ACCESS_ALLOWED_CALLBACK_ACE_TYPE
0x9
使用 ACCESS_ALLOWED_CALLBACK_ACE 结构的允许访问的回调 ACE。
ACCESS_DENIED_CALLBACK_ACE_TYPE
0xA
使用 ACCESS_DENIED_CALLBACK_ACE 结构的拒绝访问回调 ACE。
SYSTEM_AUDIT_CALLBACK_ACE_TYPE
0xD
使用 SYSTEM_AUDIT_CALLBACK_ACE 结构的系统审核回调 ACE。

[in] AccessMask

指定要授予指定 SID 的访问权限的掩码。

[in] pSid

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

[in] ConditionStr

一个字符串,指定要为 ACE 计算的条件语句。

[out] ReturnLength

ACL 的大小(以字节为单位)。 如果 pACL 参数指定的缓冲区大小不足,则此参数的值是所需的大小。

返回值

如果函数成功,则返回 TRUE

如果函数失败,则返回 FALSE。 有关扩展的错误信息,请调用 GetLastError。 下面是可能的错误值。

返回代码 说明
ERROR_INSUFFICIENT_BUFFER
新的 ACE 不适合 pAcl 缓冲区。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll