ACCESS_DENIED_OBJECT_ACE结构(winnt.h)
ACCESS_DENIED_OBJECT_ACE 结构定义 访问控制项(ACE),该条目控制拒绝访问对象、属性集或属性。 ACE 包含一组访问权限、一个标识对象类型的 GUID,以及标识系统将拒绝访问 受托人安全标识符(SID)。 ACE 还包含 GUID 和一组标志,这些标志控制子对象继承 ACE。
语法
typedef struct _ACCESS_DENIED_OBJECT_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
DWORD Flags;
GUID ObjectType;
GUID InheritedObjectType;
DWORD SidStart;
} ACCESS_DENIED_OBJECT_ACE, *PACCESS_DENIED_OBJECT_ACE;
成员
Header
ACE_HEADER 指定 ACE 的大小和类型的结构。 它包含由子对象控制 ACE 继承的标志。 ACE_HEADER 结构的 AceType 成员应设置为ACCESS_DENIED_OBJECT_ACE_TYPE,AceSize 成员应设置为为 ACCESS_DENIED_OBJECT_ACE 结构分配的总字节数。
Mask
一个指定系统将拒绝给 受托人的访问权限的 ACCESS_MASK。
Flags
一组位标志,指示是否存在 ObjectType 和 InheritedObjectType 成员。 此参数可以是以下一个或多个值。
ObjectType
仅当在 标志 成员中设置ACE_OBJECT_TYPE_PRESENT位时,此成员才存在。 否则,InheritedObjectType 成员紧跟在 标志 成员之后。
如果此成员存在,则它是标识属性集、属性、扩展权限或子对象的类型的 GUID 结构。 此 GUID 的用途取决于 掩码 成员中指定的访问权限。
InheritedObjectType
仅当在 标志 成员中设置ACE_INHERITED_OBJECT_TYPE_PRESENT位时,此成员才存在。
如果此成员存在,则它是一个 GUID 结构,用于标识可以继承 ACE 的子对象的类型。 继承还由 ACE_HEADER中的继承标志以及对子对象上放置的继承的任何保护控制。
此成员的偏移量可能会有所不同。 如果 标志 成员不包含ACE_OBJECT_TYPE_PRESENT标志,则 InheritedObjectType 成员从 ObjectType 成员指定的偏移量开始。
SidStart
指定 SID 的第一个 DWORD,用于标识拒绝其访问权限的 受托人。 SID 的剩余字节存储在 SidStart 成员之后的连续内存中。 此 SID 可以追加到应用程序数据中。
此成员的偏移量可能会有所不同。 如果 标志 成员为零,则 SidStart 成员从 ObjectType 成员指定的偏移量开始。 如果 标志 仅包含一个标志(ACE_OBJECT_TYPE_PRESENT或ACE_INHERITED_OBJECT_TYPE_PRESENT),则 SidStart 成员从 InheritedObjectType 成员指定的偏移量开始。
言论
如果既未指定 ObjectType 也没有 InheritedObjectTypeGUID,则 ACCESS_DENIED_OBJECT_ACE 结构具有与 ACCESS_DENIED_ACE 结构使用的语义相同的语义。 在这种情况下,请使用 ACCESS_DENIED_ACE 结构,因为它更小、更高效。
包含 ACCESS_DENIED_OBJECT_ACE 的 ACL 必须在其 ACL 标头中指定ACL_REVISION_DS修订号。
Mask 成员指定的访问权限被拒绝给任何 受托人,该受托方拥有与存储在 SidStart 成员中的 SID 匹配的已启用 SID。
可以通过调用 AddAccessDeniedObjectAce 函数,在 访问控制列表(ACL)中创建 ACCESS_DENIED_OBJECT_ACE 结构。 使用此函数时,如果存在其中一个或两个成员,则 ObjectType 和 InheritedObjectType 成员中容纳 GUID 结构所需的正确内存量,以及自动分配受托人的 SID。 此外,会自动设置 Header.AceType 和 Header.AceSize 成员的值。 在 ACL 外部创建 ACCESS_DENIED_OBJECT_ACE 结构时,必须分配足够的内存来容纳 ObjectType 中的 GUID 结构,并 InheritedObjectType 成员(如果存在其中一个或两个成员)以及容纳 SidStart 成员中受托人的完整 SID,以及其后的连续内存。 此外,应用程序必须显式设置 Header.AceType 和 Header.AceSize 成员的值。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winnt.h (包括 Windows.h) |