ACE Structure

The ACE structure (Access Control Entry) defines an entry in an access control list (ACL). An ACL is a list of ACEs that specifies the access rights for an object.

Definition

This structure is defined in the winnt.h header file:

typedef struct _ACE { USHORT AceType; USHORT AceFlags; USHORT AceSize; ACCESS_MASK AccessMask; union { struct { SID_IDENTIFIER_AUTHORITY SidIdentifierAuthority; ULONG SubAuthorityCount; ULONG SubAuthorities[ANYSIZE_ARRAY]; } ObjectType; struct { SID_IDENTIFIER_AUTHORITY SidIdentifierAuthority; ULONG SubAuthorityCount; ULONG SubAuthorities[ANYSIZE_ARRAY]; } InheritedObjectType; struct { SID_IDENTIFIER_AUTHORITY SidIdentifierAuthority; ULONG SubAuthorityCount; ULONG SubAuthorities[ANYSIZE_ARRAY]; } /* unnamed */ ; } AccessInformation; } ACE;

Members

Member Type Description
AceType USHORT Specifies the type of the ACE. Common values include ACCESS_ALLOWED_ACE_TYPE, ACCESS_DENIED_ACE_TYPE, and SYSTEM_AUDIT_ACE_TYPE.
AceFlags USHORT A set of flags that control inheritance and other aspects of the ACE. For example, INHERITED_ACE_FLAG indicates that the ACE is inherited.
AceSize USHORT The size of the ACE structure in bytes.
AccessMask ACCESS_MASK A bitmask that specifies the access rights granted or denied by this ACE. This is a ULONG type.
AccessInformation union This union contains information specific to the type of ACE.
  • If the ACE is an object-specific ACE (e.g., OBJECT_INHERIT_ACE, CONTAINER_INHERIT_ACE), this member might contain a ObjectType member.
  • It also contains information about the Security Identifier (SID) of the trustee (user or group) to whom the ACE applies.

Related Structures

See Also