diff --git a/reactos/include/ddk/ntifs.h b/reactos/include/ddk/ntifs.h index 3de6e03c382..dc5c90e1afa 100644 --- a/reactos/include/ddk/ntifs.h +++ b/reactos/include/ddk/ntifs.h @@ -483,9 +483,9 @@ typedef struct _ACCESS_REASONS { ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { ULONG Size; @@ -493,7 +493,6 @@ typedef struct _SE_SECURITY_DESCRIPTOR { PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; - typedef struct _SE_ACCESS_REQUEST { ULONG Size; PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; @@ -505,87 +504,45 @@ typedef struct _SE_ACCESS_REQUEST { POBJECT_TYPE_LIST ObjectTypeList; } SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; -typedef struct _SE_ACCESS_REPLY { - ULONG Size; - ULONG ResultListCount; - PACCESS_MASK GrantedAccess; - PNTSTATUS AccessStatus; - PACCESS_REASONS AccessReason; - PPRIVILEGE_SET* Privileges; -} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) -typedef enum _SE_AUDIT_OPERATION { - AuditPrivilegeObject, - AuditPrivilegeService, - AuditAccessCheck, - AuditOpenObject, - AuditOpenObjectWithTransaction, - AuditCloseObject, - AuditDeleteObject, - AuditOpenObjectForDelete, - AuditOpenObjectForDeleteWithTransaction, - AuditCloseNonObject, - AuditOpenNonObject, - AuditObjectReference, - AuditHandleCreation, -} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; - -typedef struct _SE_AUDIT_INFO { - ULONG Size; - AUDIT_EVENT_TYPE AuditType; - SE_AUDIT_OPERATION AuditOperation; - ULONG AuditFlags; - UNICODE_STRING SubsystemName; - UNICODE_STRING ObjectTypeName; - UNICODE_STRING ObjectName; - PVOID HandleId; - GUID* TransactionId; - LUID* OperationId; - BOOLEAN ObjectCreation; - BOOLEAN GenerateOnClose; -} SE_AUDIT_INFO, *PSE_AUDIT_INFO; - -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) - -#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT ) +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P |\ - TOKEN_ADJUST_SESSIONID ) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) #else -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) #endif -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) typedef enum _TOKEN_TYPE { TokenPrimary = 1, TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; +} TOKEN_TYPE, *PTOKEN_TYPE; typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, @@ -630,24 +587,24 @@ typedef struct _TOKEN_GROUPS { #else SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; #endif -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; typedef struct _TOKEN_PRIVILEGES { ULONG PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; typedef struct _TOKEN_OWNER { PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; +} TOKEN_OWNER, *PTOKEN_OWNER; typedef struct _TOKEN_PRIMARY_GROUP { PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; typedef struct _TOKEN_DEFAULT_DACL { PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { ULONG SidCount; @@ -678,25 +635,10 @@ typedef struct _TOKEN_MANDATORY_LABEL { #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 -#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ - TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) -typedef struct _TOKEN_MANDATORY_POLICY { - ULONG Policy; -} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; - -typedef struct _TOKEN_ACCESS_INFORMATION { - PSID_AND_ATTRIBUTES_HASH SidHash; - PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; - PTOKEN_PRIVILEGES Privileges; - LUID AuthenticationId; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - TOKEN_MANDATORY_POLICY MandatoryPolicy; - ULONG Flags; -} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; - -#define POLICY_AUDIT_SUBCATEGORY_COUNT (53) +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) typedef struct _TOKEN_AUDIT_POLICY { UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; @@ -707,7 +649,7 @@ typedef struct _TOKEN_AUDIT_POLICY { typedef struct _TOKEN_SOURCE { CHAR SourceName[TOKEN_SOURCE_LENGTH]; LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; +} TOKEN_SOURCE, *PTOKEN_SOURCE; typedef struct _TOKEN_STATISTICS { LUID TokenId; @@ -727,7 +669,7 @@ typedef struct _TOKEN_CONTROL { LUID AuthenticationId; LUID ModifiedId; TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; +} TOKEN_CONTROL, *PTOKEN_CONTROL; typedef struct _TOKEN_ORIGIN { LUID OriginatingLogonSession; @@ -743,6 +685,62 @@ typedef enum _MANDATORY_LEVEL { MandatoryLevelCount } MANDATORY_LEVEL, *PMANDATORY_LEVEL; + +typedef struct _SE_ACCESS_REPLY { + ULONG Size; + ULONG ResultListCount; + PACCESS_MASK GrantedAccess; + PNTSTATUS AccessStatus; + PACCESS_REASONS AccessReason; + PPRIVILEGE_SET* Privileges; +} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; + +typedef enum _SE_AUDIT_OPERATION { + AuditPrivilegeObject, + AuditPrivilegeService, + AuditAccessCheck, + AuditOpenObject, + AuditOpenObjectWithTransaction, + AuditCloseObject, + AuditDeleteObject, + AuditOpenObjectForDelete, + AuditOpenObjectForDeleteWithTransaction, + AuditCloseNonObject, + AuditOpenNonObject, + AuditObjectReference, + AuditHandleCreation, +} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; + +typedef struct _SE_AUDIT_INFO { + ULONG Size; + AUDIT_EVENT_TYPE AuditType; + SE_AUDIT_OPERATION AuditOperation; + ULONG AuditFlags; + UNICODE_STRING SubsystemName; + UNICODE_STRING ObjectTypeName; + UNICODE_STRING ObjectName; + PVOID HandleId; + GUID* TransactionId; + LUID* OperationId; + BOOLEAN ObjectCreation; + BOOLEAN GenerateOnClose; +} SE_AUDIT_INFO, *PSE_AUDIT_INFO; + +typedef struct _TOKEN_MANDATORY_POLICY { + ULONG Policy; +} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; + +typedef struct _TOKEN_ACCESS_INFORMATION { + PSID_AND_ATTRIBUTES_HASH SidHash; + PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; + PTOKEN_PRIVILEGES Privileges; + LUID AuthenticationId; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + TOKEN_MANDATORY_POLICY MandatoryPolicy; + ULONG Flags; +} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; + #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x0001 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x0002 #define TOKEN_HAS_RESTORE_PRIVILEGE 0x0004 diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index afacd3dfbe1..cb67044e193 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -2832,36 +2832,6 @@ _InterlockedBitTestAndComplement64( #define SERVICE_ERROR_SEVERE 2 #define SERVICE_ERROR_CRITICAL 3 -/* also in ddk/ntifs.h */ -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) -#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT |\ - TOKEN_ADJUST_SESSIONID) -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) -#define TOKEN_SOURCE_LENGTH 8 -/* end ddk/ntifs.h */ #define DLL_PROCESS_DETACH 0 #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 @@ -4635,9 +4605,9 @@ typedef struct _ACCESS_REASONS { ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { DWORD Size; @@ -4645,6 +4615,198 @@ typedef struct _SE_SECURITY_DESCRIPTOR { PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; +typedef struct _SE_ACCESS_REQUEST { + DWORD Size; + PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; + ACCESS_MASK DesiredAccess; + ACCESS_MASK PreviouslyGrantedAccess; + PSID PrincipalSelfSid; + PGENERIC_MAPPING GenericMapping; + DWORD ObjectTypeListCount; + POBJECT_TYPE_LIST ObjectTypeList; +} SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; + +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) + +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) +#else +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#endif + +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) + +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) + +typedef enum _TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} TOKEN_TYPE, *PTOKEN_TYPE; + +typedef enum _TOKEN_INFORMATION_CLASS { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin, + TokenElevationType, + TokenLinkedToken, + TokenElevation, + TokenHasRestrictions, + TokenAccessInformation, + TokenVirtualizationAllowed, + TokenVirtualizationEnabled, + TokenIntegrityLevel, + TokenUIAccess, + TokenMandatoryPolicy, + TokenLogonSid, + MaxTokenInfoClass +} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS; + +typedef struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; +} TOKEN_USER, *PTOKEN_USER; + +typedef struct _TOKEN_GROUPS { + DWORD GroupCount; +#ifdef MIDL_PASS + [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; +#else + SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; +#endif +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; + +typedef struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; + +typedef struct _TOKEN_OWNER { + PSID Owner; +} TOKEN_OWNER, *PTOKEN_OWNER; + +typedef struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; + +typedef struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; + +typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { + DWORD SidCount; + DWORD SidLength; + PSID_AND_ATTRIBUTES Sids; + DWORD RestrictedSidCount; + DWORD RestrictedSidLength; + PSID_AND_ATTRIBUTES RestrictedSids; + DWORD PrivilegeCount; + DWORD PrivilegeLength; + PLUID_AND_ATTRIBUTES Privileges; + LUID AuthenticationId; +} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; + +typedef struct _TOKEN_LINKED_TOKEN { + HANDLE LinkedToken; +} TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN; + +typedef struct _TOKEN_ELEVATION { + DWORD TokenIsElevated; +} TOKEN_ELEVATION, *PTOKEN_ELEVATION; + +typedef struct _TOKEN_MANDATORY_LABEL { + SID_AND_ATTRIBUTES Label; +} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL; + +#define TOKEN_MANDATORY_POLICY_OFF 0x0 +#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 +#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 + +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) + +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) + +typedef struct _TOKEN_AUDIT_POLICY { + BYTE PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; +} TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; + +#define TOKEN_SOURCE_LENGTH 8 + +typedef struct _TOKEN_SOURCE { + CHAR SourceName[TOKEN_SOURCE_LENGTH]; + LUID SourceIdentifier; +} TOKEN_SOURCE, *PTOKEN_SOURCE; + +typedef struct _TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} TOKEN_STATISTICS, *PTOKEN_STATISTICS; + +typedef struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} TOKEN_CONTROL, *PTOKEN_CONTROL; + +typedef struct _TOKEN_ORIGIN { + LUID OriginatingLogonSession; +} TOKEN_ORIGIN, *PTOKEN_ORIGIN; + +typedef enum _MANDATORY_LEVEL { + MandatoryLevelUntrusted = 0, + MandatoryLevelLow, + MandatoryLevelMedium, + MandatoryLevelHigh, + MandatoryLevelSystem, + MandatoryLevelSecureProcess, + MandatoryLevelCount +} MANDATORY_LEVEL, *PMANDATORY_LEVEL; + typedef struct _ACCESS_ALLOWED_OBJECT_ACE { ACE_HEADER Header; @@ -4742,123 +4904,12 @@ typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { DWORD SidStart; } SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; -typedef struct _TOKEN_SOURCE { - CHAR SourceName[TOKEN_SOURCE_LENGTH]; - LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; - -typedef struct _TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; - -typedef struct _TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; - -typedef struct _TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; - -typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - DWORD SidCount; - DWORD SidLength; - PSID_AND_ATTRIBUTES Sids; - DWORD RestrictedSidCount; - DWORD RestrictedSidLength; - PSID_AND_ATTRIBUTES RestrictedSids; - DWORD PrivilegeCount; - DWORD PrivilegeLength; - PLUID_AND_ATTRIBUTES Privileges; - LUID AuthenticationId; -} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; - -typedef struct _TOKEN_ORIGIN { - LUID OriginatingLogonSession; -} TOKEN_ORIGIN, *PTOKEN_ORIGIN; - -typedef struct _TOKEN_OWNER { - PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; - -typedef struct _TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; - -typedef struct _TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; - -typedef enum tagTOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; - typedef enum _TOKEN_ELEVATION_TYPE { TokenElevationTypeDefault = 1, TokenElevationTypeFull, TokenElevationTypeLimited, } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; -typedef struct _TOKEN_MANDATORY_LABEL { - SID_AND_ATTRIBUTES Label; -} TOKEN_MANDATORY_LABEL, * PTOKEN_MANDATORY_LABEL; - -#include -typedef struct _TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; -} TOKEN_STATISTICS, *PTOKEN_STATISTICS; -#include - -typedef struct _TOKEN_USER { - SID_AND_ATTRIBUTES User; -} TOKEN_USER, *PTOKEN_USER; - -typedef enum _TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin, - TokenElevationType, - TokenLinkedToken, - TokenElevation, - TokenHasRestrictions, - TokenAccessInformation, - TokenVirtualizationAllowed, - TokenVirtualizationEnabled, - TokenIntegrityLevel, - TokenUIAccess, - TokenMandatoryPolicy, - TokenLogonSid, - MaxTokenInfoClass -} TOKEN_INFORMATION_CLASS; - typedef struct _QUOTA_LIMITS { SIZE_T PagedPoolLimit; SIZE_T NonPagedPoolLimit; diff --git a/reactos/include/xdk/setypes.h b/reactos/include/xdk/setypes.h index 26d9505dae1..68e3e69cab5 100644 --- a/reactos/include/xdk/setypes.h +++ b/reactos/include/xdk/setypes.h @@ -822,9 +822,9 @@ typedef struct _ACCESS_REASONS { ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { $ULONG Size; @@ -832,101 +832,56 @@ typedef struct _SE_SECURITY_DESCRIPTOR { PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; -$endif(_NTIFS_ || _WINNT_) -$if(_NTIFS_) - typedef struct _SE_ACCESS_REQUEST { - ULONG Size; + $ULONG Size; PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; ACCESS_MASK DesiredAccess; ACCESS_MASK PreviouslyGrantedAccess; PSID PrincipalSelfSid; PGENERIC_MAPPING GenericMapping; - ULONG ObjectTypeListCount; + $ULONG ObjectTypeListCount; POBJECT_TYPE_LIST ObjectTypeList; } SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; -typedef struct _SE_ACCESS_REPLY { - ULONG Size; - ULONG ResultListCount; - PACCESS_MASK GrantedAccess; - PNTSTATUS AccessStatus; - PACCESS_REASONS AccessReason; - PPRIVILEGE_SET* Privileges; -} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) -typedef enum _SE_AUDIT_OPERATION { - AuditPrivilegeObject, - AuditPrivilegeService, - AuditAccessCheck, - AuditOpenObject, - AuditOpenObjectWithTransaction, - AuditCloseObject, - AuditDeleteObject, - AuditOpenObjectForDelete, - AuditOpenObjectForDeleteWithTransaction, - AuditCloseNonObject, - AuditOpenNonObject, - AuditObjectReference, - AuditHandleCreation, -} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; - -typedef struct _SE_AUDIT_INFO { - ULONG Size; - AUDIT_EVENT_TYPE AuditType; - SE_AUDIT_OPERATION AuditOperation; - ULONG AuditFlags; - UNICODE_STRING SubsystemName; - UNICODE_STRING ObjectTypeName; - UNICODE_STRING ObjectName; - PVOID HandleId; - GUID* TransactionId; - LUID* OperationId; - BOOLEAN ObjectCreation; - BOOLEAN GenerateOnClose; -} SE_AUDIT_INFO, *PSE_AUDIT_INFO; - -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) - -#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT ) +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P |\ - TOKEN_ADJUST_SESSIONID ) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) #else -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) #endif -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) typedef enum _TOKEN_TYPE { TokenPrimary = 1, TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; +} TOKEN_TYPE, *PTOKEN_TYPE; typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, @@ -965,40 +920,40 @@ typedef struct _TOKEN_USER { } TOKEN_USER, *PTOKEN_USER; typedef struct _TOKEN_GROUPS { - ULONG GroupCount; + $ULONG GroupCount; #ifdef MIDL_PASS [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; #else SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; #endif -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; typedef struct _TOKEN_PRIVILEGES { - ULONG PrivilegeCount; + $ULONG PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; typedef struct _TOKEN_OWNER { PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; +} TOKEN_OWNER, *PTOKEN_OWNER; typedef struct _TOKEN_PRIMARY_GROUP { PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; typedef struct _TOKEN_DEFAULT_DACL { PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - ULONG SidCount; - ULONG SidLength; + $ULONG SidCount; + $ULONG SidLength; PSID_AND_ATTRIBUTES Sids; - ULONG RestrictedSidCount; - ULONG RestrictedSidLength; + $ULONG RestrictedSidCount; + $ULONG RestrictedSidLength; PSID_AND_ATTRIBUTES RestrictedSids; - ULONG PrivilegeCount; - ULONG PrivilegeLength; + $ULONG PrivilegeCount; + $ULONG PrivilegeLength; PLUID_AND_ATTRIBUTES Privileges; LUID AuthenticationId; } TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; @@ -1008,7 +963,7 @@ typedef struct _TOKEN_LINKED_TOKEN { } TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN; typedef struct _TOKEN_ELEVATION { - ULONG TokenIsElevated; + $ULONG TokenIsElevated; } TOKEN_ELEVATION, *PTOKEN_ELEVATION; typedef struct _TOKEN_MANDATORY_LABEL { @@ -1019,28 +974,13 @@ typedef struct _TOKEN_MANDATORY_LABEL { #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 -#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ - TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) -typedef struct _TOKEN_MANDATORY_POLICY { - ULONG Policy; -} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; - -typedef struct _TOKEN_ACCESS_INFORMATION { - PSID_AND_ATTRIBUTES_HASH SidHash; - PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; - PTOKEN_PRIVILEGES Privileges; - LUID AuthenticationId; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - TOKEN_MANDATORY_POLICY MandatoryPolicy; - ULONG Flags; -} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; - -#define POLICY_AUDIT_SUBCATEGORY_COUNT (53) +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) typedef struct _TOKEN_AUDIT_POLICY { - UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; + $UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; #define TOKEN_SOURCE_LENGTH 8 @@ -1048,7 +988,7 @@ typedef struct _TOKEN_AUDIT_POLICY { typedef struct _TOKEN_SOURCE { CHAR SourceName[TOKEN_SOURCE_LENGTH]; LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; +} TOKEN_SOURCE, *PTOKEN_SOURCE; typedef struct _TOKEN_STATISTICS { LUID TokenId; @@ -1056,10 +996,10 @@ typedef struct _TOKEN_STATISTICS { LARGE_INTEGER ExpirationTime; TOKEN_TYPE TokenType; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - ULONG DynamicCharged; - ULONG DynamicAvailable; - ULONG GroupCount; - ULONG PrivilegeCount; + $ULONG DynamicCharged; + $ULONG DynamicAvailable; + $ULONG GroupCount; + $ULONG PrivilegeCount; LUID ModifiedId; } TOKEN_STATISTICS, *PTOKEN_STATISTICS; @@ -1068,7 +1008,7 @@ typedef struct _TOKEN_CONTROL { LUID AuthenticationId; LUID ModifiedId; TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; +} TOKEN_CONTROL, *PTOKEN_CONTROL; typedef struct _TOKEN_ORIGIN { LUID OriginatingLogonSession; @@ -1084,6 +1024,64 @@ typedef enum _MANDATORY_LEVEL { MandatoryLevelCount } MANDATORY_LEVEL, *PMANDATORY_LEVEL; +$endif(_NTIFS_ || _WINNT_) +$if(_NTIFS_) + +typedef struct _SE_ACCESS_REPLY { + $ULONG Size; + $ULONG ResultListCount; + PACCESS_MASK GrantedAccess; + PNTSTATUS AccessStatus; + PACCESS_REASONS AccessReason; + PPRIVILEGE_SET* Privileges; +} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; + +typedef enum _SE_AUDIT_OPERATION { + AuditPrivilegeObject, + AuditPrivilegeService, + AuditAccessCheck, + AuditOpenObject, + AuditOpenObjectWithTransaction, + AuditCloseObject, + AuditDeleteObject, + AuditOpenObjectForDelete, + AuditOpenObjectForDeleteWithTransaction, + AuditCloseNonObject, + AuditOpenNonObject, + AuditObjectReference, + AuditHandleCreation, +} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; + +typedef struct _SE_AUDIT_INFO { + ULONG Size; + AUDIT_EVENT_TYPE AuditType; + SE_AUDIT_OPERATION AuditOperation; + ULONG AuditFlags; + UNICODE_STRING SubsystemName; + UNICODE_STRING ObjectTypeName; + UNICODE_STRING ObjectName; + PVOID HandleId; + GUID* TransactionId; + LUID* OperationId; + BOOLEAN ObjectCreation; + BOOLEAN GenerateOnClose; +} SE_AUDIT_INFO, *PSE_AUDIT_INFO; + +typedef struct _TOKEN_MANDATORY_POLICY { + $ULONG Policy; +} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; + +typedef struct _TOKEN_ACCESS_INFORMATION { + PSID_AND_ATTRIBUTES_HASH SidHash; + PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; + PTOKEN_PRIVILEGES Privileges; + LUID AuthenticationId; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + TOKEN_MANDATORY_POLICY MandatoryPolicy; + $ULONG Flags; +} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; + #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x0001 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x0002 #define TOKEN_HAS_RESTORE_PRIVILEGE 0x0004 diff --git a/reactos/include/xdk/winnt_old.h b/reactos/include/xdk/winnt_old.h index b7e4db3b687..09033e624ef 100644 --- a/reactos/include/xdk/winnt_old.h +++ b/reactos/include/xdk/winnt_old.h @@ -937,36 +937,6 @@ #define SERVICE_ERROR_SEVERE 2 #define SERVICE_ERROR_CRITICAL 3 -/* also in ddk/ntifs.h */ -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) -#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT |\ - TOKEN_ADJUST_SESSIONID) -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) -#define TOKEN_SOURCE_LENGTH 8 -/* end ddk/ntifs.h */ #define DLL_PROCESS_DETACH 0 #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 @@ -2200,123 +2170,12 @@ typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { DWORD SidStart; } SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; -typedef struct _TOKEN_SOURCE { - CHAR SourceName[TOKEN_SOURCE_LENGTH]; - LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; - -typedef struct _TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; - -typedef struct _TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; - -typedef struct _TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; - -typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - DWORD SidCount; - DWORD SidLength; - PSID_AND_ATTRIBUTES Sids; - DWORD RestrictedSidCount; - DWORD RestrictedSidLength; - PSID_AND_ATTRIBUTES RestrictedSids; - DWORD PrivilegeCount; - DWORD PrivilegeLength; - PLUID_AND_ATTRIBUTES Privileges; - LUID AuthenticationId; -} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; - -typedef struct _TOKEN_ORIGIN { - LUID OriginatingLogonSession; -} TOKEN_ORIGIN, *PTOKEN_ORIGIN; - -typedef struct _TOKEN_OWNER { - PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; - -typedef struct _TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; - -typedef struct _TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; - -typedef enum tagTOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; - typedef enum _TOKEN_ELEVATION_TYPE { TokenElevationTypeDefault = 1, TokenElevationTypeFull, TokenElevationTypeLimited, } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; -typedef struct _TOKEN_MANDATORY_LABEL { - SID_AND_ATTRIBUTES Label; -} TOKEN_MANDATORY_LABEL, * PTOKEN_MANDATORY_LABEL; - -#include -typedef struct _TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; -} TOKEN_STATISTICS, *PTOKEN_STATISTICS; -#include - -typedef struct _TOKEN_USER { - SID_AND_ATTRIBUTES User; -} TOKEN_USER, *PTOKEN_USER; - -typedef enum _TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin, - TokenElevationType, - TokenLinkedToken, - TokenElevation, - TokenHasRestrictions, - TokenAccessInformation, - TokenVirtualizationAllowed, - TokenVirtualizationEnabled, - TokenIntegrityLevel, - TokenUIAccess, - TokenMandatoryPolicy, - TokenLogonSid, - MaxTokenInfoClass -} TOKEN_INFORMATION_CLASS; - typedef struct _QUOTA_LIMITS { SIZE_T PagedPoolLimit; SIZE_T NonPagedPoolLimit;