typedef struct _ACCESS_STATE
{
    LUID OperationID;
    unsigned char SecurityEvaluated;
    unsigned char GenerateAudit;
    unsigned char GenerateOnClose;
    unsigned char PrivilegesAllocated;
    unsigned long Flags;
    unsigned long RemainingDesiredAccess;
    unsigned long PreviouslyGrantedAccess;
    unsigned long OriginalDesiredAccess;
    SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
    void *SecurityDescriptor;
    void *AuxData;
    union
    {
        INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
        PRIVILEGE_SET PrivilegeSet;
    } Privileges;
    unsigned char AuditPrivileges;
    UNICODE_STRING ObjectName;
    UNICODE_STRING ObjectTypeName;
} ACCESS_STATE, *PACCESS_STATE;