winnt.h) (SYSTEM_AUDIT_OBJECT_ACE 结构
SYSTEM_AUDIT_OBJECT_ACE结构 (ACE) 为系统访问控制列表定义访问控制项, (SACL) 。 ACE 可以审核对对象或子对象(如属性集或属性)的访问。 ACE 包含一组访问权限、一个标识对象或子对象类型的 GUID,以及一个 安全标识符 (SID) ,用于标识系统将审核其访问权限的 受托人 。 ACE 还包含一个 GUID 和一组标志,这些标志控制子对象对 ACE 的继承。
语法
typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
DWORD Flags;
GUID ObjectType;
GUID InheritedObjectType;
DWORD SidStart;
} SYSTEM_AUDIT_OBJECT_ACE, *PSYSTEM_AUDIT_OBJECT_ACE;
成员
Header
指定 ACE 的大小和类型的 ACE_HEADER 结构。 它包含一些标志,这些标志控制子对象对 ACE 的继承。 结构还包含标志,这些标志指示 ACE 是审核成功的访问尝试和/或失败的访问尝试。 ACE_HEADER 结构的 AceType 成员应设置为 SYSTEM_AUDIT_OBJECT_ACE_TYPE,AceSize 成员应设置为为 SYSTEM_AUDIT_OBJECT_ACE 结构分配的总字节数。
Mask
一个ACCESS_MASK,指定系统将审核受信人尝试的访问权限。
Flags
一组位标志,指示 ObjectType 和 InheritedObjectType 成员是否包含 GUID。 此成员可以是以下值的组合。 将所有未定义的位设置为零。
值 | 含义 |
---|---|
|
ObjectType 成员包含 GUID。 |
|
InheritedObjectType 成员包含 GUID。 |
ObjectType
标识属性集、属性、扩展权限或子对象的类型的 GUID 结构。
仅当在 Flags 成员中设置了ACE_OBJECT_TYPE_PRESENT位时,此成员才有效。 否则, 将忽略 ObjectType 。
此 GUID 的用途取决于 Mask 成员中指定的访问权限。
此成员可以是以下值之一。
InheritedObjectType
标识可继承 ACE 的子对象的类型的 GUID 结构。
仅当在 Flags 成员中设置了ACE_INHERITED_OBJECT_TYPE_PRESENT位时,此成员才有效。 如果未设置该位,则忽略 InheritedObjectType ,并且所有类型的子对象都可以继承 ACE。 在任一情况下,继承也受 ACE_HEADER中的继承标志以及针对子对象上放置的继承的任何保护来控制。
此成员的偏移量可能会有所不同。 如果 Flags 成员不包含 ACE_OBJECT_TYPE_PRESENT 标志,则 InheritedObjectType 成员从 ObjectType 成员指定的偏移量开始。
SidStart
指定 SID 的第一个 DWORD ,该 SID 标识对其审核访问尝试的 受信人 。 SID 的剩余字节存储在 SidStart 成员之后的连续内存中。 此 SID 可以追加应用程序数据。
此成员的偏移量可能会有所不同。 如果 Flags 成员为零,则 SidStart 成员从 ObjectType 成员指定的偏移量开始。 如果 Flags 仅包含一个标志 (ACE_OBJECT_TYPE_PRESENT或ACE_INHERITED_OBJECT_TYPE_PRESENT) , 则 SidStart 成员从 InheritedObjectType 成员指定的偏移量开始。
注解
如果 ObjectType 和 InheritedObjectType GUID 均未指定, 则SYSTEM_AUDIT_OBJECT_ACE 结构具有与 SYSTEM_AUDIT_ACE 结构相同的语义。 在这种情况下,请使用 SYSTEM_AUDIT_ACE 结构,因为它更小且更高效。
包含 SYSTEM_AUDIT_OBJECT_ACE 的 ACL 必须在其ACE_HEADER结构中指定 ACL_REVISION_DS 修订号。
创建 SYSTEM_AUDIT_OBJECT_ACE 结构时,必须分配足够的内存,以容纳 ObjectType 和 InheritedObjectType 成员中的 GUID 结构(如果其中一个或两个都存在),以及容纳 SidStart 成员中受信者的完整 SID 和它后面的连续内存。
可以通过调用 AddAuditAccessObjectAce 函数,在访问控制列表中 (ACL) 创建SYSTEM_AUDIT_OBJECT_ACE结构。 使用此函数时,将自动分配用于容纳 ObjectType 和 InheritedObjectType 成员中的 GUID 结构(如果其中一个或两个都存在)以及容纳受信者的 SID 所需的正确内存量。 此外,还会自动设置 Header.AceType 和 Header.AceSize 成员的值。 在 ACL 外部创建 SYSTEM_AUDIT_OBJECT_ACE 结构时,必须分配足够的内存,以容纳 ObjectType 和 InheritedObjectType 成员中的 GUID 结构(如果其中一个或两个都存在),以及容纳 SidStart 成员中受信者的完整 SID 和它后面的连续内存。 此外,应用程序必须显式设置 Header.AceType 和 Header.AceSize 成员的值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winnt.h (包括 Windows.h) |