ACCESS_ALLOWED_CALLBACK_OBJECT_ACE 结构 (winnt.h)

ACCESS_ALLOWED_CALLBACK_OBJECT_ACE 结构定义访问控制 (ACE) ,该条目控制允许访问对象、属性集或属性。 ACE 包含一组访问权限、一个标识对象类型的 GUID 和一个 安全标识符 (SID) ,用于标识系统将向其授予访问权限的 受托人 。 ACE 还包含一个 GUID 和一组标志,用于控制子对象继承 ACE。

调用 AuthzAccessCheck 函数时,通过指向 AuthzAccessCheck 函数的指针传递的SECURITY_DESCRIPTOR结构的 DACL 中包含的每个ACCESS_ALLOWED_CALLBACK_OBJECT_ACE结构都会调用对应用程序定义的 AuthzAccessCheckCallback 函数的调用,其中找到ACCESS_ALLOWED_CALLBACK_OBJECT_ACE结构的指针在 pAce 参数中传递。

语法

typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE {
  ACE_HEADER  Header;
  ACCESS_MASK Mask;
  DWORD       Flags;
  GUID        ObjectType;
  GUID        InheritedObjectType;
  DWORD       SidStart;
} ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, *PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;

成员

Header

ACE_HEADER 结构,用于指定 ACE 的大小和类型。 它还包含控制子对象继承 ACE 的标志。 ACE_HEADER 结构的 AceType 成员应设置为 ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE,AceSize 成员应设置为为ACCESS_ALLOWED_CALLBACK_OBJECT_ACE结构分配的字节总数。

Mask

一个ACCESS_MASK,指定系统将授予受托人的访问权限。

Flags

一组位标志,指示是否存在 ObjectTypeInheritedObjectType 成员。 此参数可使用以下一个或多个值。

含义
0
ObjectTypeInheritedObjectType 均不存在。 SidStart 成员紧跟在 Flags 成员之后。
ACE_OBJECT_TYPE_PRESENT
ObjectType 存在并包含 GUID

如果未指定此值, 则 InheritedObjectType 成员紧跟在 Flags 成员之后。

ACE_INHERITED_OBJECT_TYPE_PRESENT
InheritedObjectType 存在,并且包含 GUID

如果未指定此值,则所有类型的子对象都可以继承 ACE。

ObjectType

仅当 在 Flags 成员中设置了ACE_OBJECT_TYPE_PRESENT位时,此成员才存在。 否则, InheritedObjectType 成员紧跟在 Flags 成员之后。

如果此成员存在,则它是标识属性集、属性、扩展权限或子对象的类型的 GUID 结构。 此 GUID 的用途取决于 掩码 成员中指定的访问权限。

含义
ADS_RIGHT_DS_CONTROL_ACCESS
ObjectTypeGUID 标识扩展访问权限。
ADS_RIGHT_DS_CREATE_CHILD
ObjectTypeGUID 标识子对象的类型。 ACE 控制受托人创建此类子对象的权利。
ADS_RIGHT_DS_READ_PROP
ObjectTypeGUID 标识对象的属性集或属性。 ACE 控制受托人读取属性或属性集的权利。
ADS_RIGHT_DS_WRITE_PROP
ObjectTypeGUID 标识对象的属性集或属性。 ACE 控制受托人写入属性或属性集的权限。
ADS_RIGHT_DS_SELF
ObjectTypeGUID 标识已验证的写入。

InheritedObjectType

仅当在 Flags 成员中设置了ACE_INHERITED_OBJECT_TYPE_PRESENT位时,此成员才存在。

如果此成员存在,则它是一个 GUID 结构,用于标识可继承 ACE 的子对象的类型。 继承也由 ACE_HEADER中的继承标志以及针对子对象上放置的继承的任何保护进行控制。

此成员的偏移量可能会有所不同。 如果 Flags 成员不包含 ACE_OBJECT_TYPE_PRESENT 标志, 则 InheritedObjectType 成员从 ObjectType 成员指定的偏移量开始。

SidStart

受托人的 SID 的第一个 DWORD 。 SID 的剩余字节存储在 SidStart 成员之后的连续内存中。 此 SID 可以追加应用程序数据。

注解

如果未指定 ObjectTypeInheritedObjectTypeGUID则ACCESS_ALLOWED_CALLBACK_OBJECT_ACE 结构与 ACCESS_ALLOWED_CALLBACK_ACE 结构使用的语义相同。 在这种情况下,请使用 ACCESS_ALLOWED_CALLBACK_ACE 结构,因为它更小、更高效。

包含 ACCESS_ALLOWED_CALLBACK_OBJECT_ACE 的 ACL 必须在其 ACL 标头中指定ACL_REVISION_DS修订号。

Mask 成员指定的访问权限将授予具有与 SidStart 成员中存储的 SID 匹配的已启用 SID 的任何受托人

创建 ACCESS_ALLOWED_CALLBACK_OBJECT_ACE 结构时,必须分配足够的内存,以容纳 ObjectTypeInheritedObjectType 成员中的 GUID 结构(如果其中一个或两个成员存在),以及容纳 SidStart 成员中受托人的完整 SID 和它后面的连续内存。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winnt.h (包括 Windows.h)

另请参阅

Ace

ACL

AddAuditAccessObjectAce

GUID

SID