Structures/ACL.ps1

<#
.SYNOPSIS
 
The ACL structure is the header of an access control list (ACL). A complete ACL consists of an ACL structure followed by an ordered list of zero or more access control entries (ACEs).
 
.PARAMETER AclRevision
 
Specifies the revision level of the ACL. This value should be ACL_REVISION, unless the ACL contains an object-specific ACE, in which case this value must be ACL_REVISION_DS. All ACEs in an ACL must be at the same revision level.
 
.PARAMETER Sbz1
 
Specifies a zero byte of padding that aligns the AclRevision member on a 16-bit boundary.
 
.PARAMETER AclSize
 
Specifies the size, in bytes, of the ACL. This value includes both the ACL structure and all the ACEs.
 
.PARAMETER AceCount
 
Specifies the number of ACEs stored in the ACL.
 
.PARAMETER Sbz2
 
Specifies two zero-bytes of padding that align the ACL structure on a 32-bit boundary.
 
.NOTES
 
Author: Jared Atkinson (@jaredcatkinson)
License: BSD 3-Clause
Required Dependencies: PSReflect
Optional Dependencies: None
 
typedef struct _ACL {
  BYTE AclRevision;
  BYTE Sbz1;
  WORD AclSize;
  WORD AceCount;
  WORD Sbz2;
} ACL, *PACL;
 
.LINK
 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa374931(v=vs.85).aspx
#>


$ACL = struct $Module ACL @{
    AclRevision = field 0 Byte
    Sbz1        = field 1 Byte
    AclSize     = field 2 UInt16
    AceCount    = field 3 UInt16
    Sbz2        = field 4 UInt16
}