| /* | |
| * Win32 definitions for Windows NT | |
| * | |
| * Copyright 1996 Alexandre Julliard | |
| */ | |
| #ifndef __WINE_WINNT_H | |
| #define __WINE_WINNT_H | |
| #include "windef.h" | |
| #include "pshpack1.h" | |
| /* Defines */ | |
| /* Argument 1 passed to the DllEntryProc. */ | |
| #define DLL_PROCESS_DETACH 0 /* detach process (unload library) */ | |
| #define DLL_PROCESS_ATTACH 1 /* attach process (load library) */ | |
| #define DLL_THREAD_ATTACH 2 /* attach new thread */ | |
| #define DLL_THREAD_DETACH 3 /* detach thread */ | |
| /* u.x.wProcessorArchitecture (NT) */ | |
| #define PROCESSOR_ARCHITECTURE_INTEL 0 | |
| #define PROCESSOR_ARCHITECTURE_MIPS 1 | |
| #define PROCESSOR_ARCHITECTURE_ALPHA 2 | |
| #define PROCESSOR_ARCHITECTURE_PPC 3 | |
| #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF | |
| /* dwProcessorType */ | |
| #define PROCESSOR_INTEL_386 386 | |
| #define PROCESSOR_INTEL_486 486 | |
| #define PROCESSOR_INTEL_PENTIUM 586 | |
| #define PROCESSOR_MIPS_R4000 4000 | |
| #define PROCESSOR_ALPHA_21064 21064 | |
| #define ANYSIZE_ARRAY 1 | |
| #define MINCHAR 0x80 | |
| #define MAXCHAR 0x7f | |
| #define MINSHORT 0x8000 | |
| #define MAXSHORT 0x7fff | |
| #define MINLONG 0x80000000 | |
| #define MAXLONG 0x7fffffff | |
| #define MAXBYTE 0xff | |
| #define MAXWORD 0xffff | |
| #define MAXDWORD 0xffffffff | |
| #define FIELD_OFFSET(type, field) \ | |
| ((LONG)(INT)&(((type *)0)->field)) | |
| #define CONTAINING_RECORD(address, type, field) \ | |
| ((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field))) | |
| /* Types */ | |
| typedef BYTE BOOLEAN; | |
| typedef BOOLEAN *PBOOLEAN; | |
| typedef struct _LIST_ENTRY { | |
| struct _LIST_ENTRY *Flink; | |
| struct _LIST_ENTRY *Blink; | |
| } LIST_ENTRY, *PLIST_ENTRY; | |
| typedef struct _SINGLE_LIST_ENTRY { | |
| struct _SINGLE_LIST_ENTRY *Next; | |
| } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; | |
| /* Heap flags */ | |
| #define HEAP_NO_SERIALIZE 0x00000001 | |
| #define HEAP_GROWABLE 0x00000002 | |
| #define HEAP_GENERATE_EXCEPTIONS 0x00000004 | |
| #define HEAP_ZERO_MEMORY 0x00000008 | |
| #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 | |
| #define HEAP_TAIL_CHECKING_ENABLED 0x00000020 | |
| #define HEAP_FREE_CHECKING_ENABLED 0x00000040 | |
| #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 | |
| #define HEAP_CREATE_ALIGN_16 0x00010000 | |
| #define HEAP_CREATE_ENABLE_TRACING 0x00020000 | |
| #define HEAP_WINE_SEGPTR 0x01000000 /* Not a Win32 flag */ | |
| #define HEAP_WINE_CODESEG 0x02000000 /* Not a Win32 flag */ | |
| #define HEAP_WINE_CODE16SEG 0x04000000 /* Not a Win32 flag */ | |
| /* Processor feature flags. */ | |
| #define PF_FLOATING_POINT_PRECISION_ERRATA 0 | |
| #define PF_FLOATING_POINT_EMULATED 1 | |
| #define PF_COMPARE_EXCHANGE_DOUBLE 2 | |
| #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 | |
| #define PF_PPC_MOVEMEM_64BIT_OK 4 | |
| #define PF_ALPHA_BYTE_INSTRUCTIONS 5 | |
| /* The Win32 register context */ | |
| #define CONTEXT_i386 0x00010000 | |
| #define CONTEXT_i486 CONTEXT_i386 | |
| #define CONTEXT_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */ | |
| #define CONTEXT_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */ | |
| #define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */ | |
| #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */ | |
| #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */ | |
| #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS) | |
| #define SIZE_OF_80387_REGISTERS 80 | |
| typedef struct | |
| { | |
| DWORD ControlWord; | |
| DWORD StatusWord; | |
| DWORD TagWord; | |
| DWORD ErrorOffset; | |
| DWORD ErrorSelector; | |
| DWORD DataOffset; | |
| DWORD DataSelector; | |
| BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; | |
| DWORD Cr0NpxState; | |
| } FLOATING_SAVE_AREA; | |
| typedef struct | |
| { | |
| DWORD ContextFlags; | |
| /* These are selected by CONTEXT_DEBUG_REGISTERS */ | |
| DWORD Dr0; | |
| DWORD Dr1; | |
| DWORD Dr2; | |
| DWORD Dr3; | |
| DWORD Dr6; | |
| DWORD Dr7; | |
| /* These are selected by CONTEXT_FLOATING_POINT */ | |
| FLOATING_SAVE_AREA FloatSave; | |
| /* These are selected by CONTEXT_SEGMENTS */ | |
| DWORD SegGs; | |
| DWORD SegFs; | |
| DWORD SegEs; | |
| DWORD SegDs; | |
| /* These are selected by CONTEXT_INTEGER */ | |
| DWORD Edi; | |
| DWORD Esi; | |
| DWORD Ebx; | |
| DWORD Edx; | |
| DWORD Ecx; | |
| DWORD Eax; | |
| /* These are selected by CONTEXT_CONTROL */ | |
| DWORD Ebp; | |
| DWORD Eip; | |
| DWORD SegCs; | |
| DWORD EFlags; | |
| DWORD Esp; | |
| DWORD SegSs; | |
| } CONTEXT, *PCONTEXT; | |
| typedef HANDLE *PHANDLE; | |
| #ifdef __WINE__ | |
| /* Macros for easier access to context registers */ | |
| #define EAX_reg(context) ((context)->Eax) | |
| #define EBX_reg(context) ((context)->Ebx) | |
| #define ECX_reg(context) ((context)->Ecx) | |
| #define EDX_reg(context) ((context)->Edx) | |
| #define ESI_reg(context) ((context)->Esi) | |
| #define EDI_reg(context) ((context)->Edi) | |
| #define EBP_reg(context) ((context)->Ebp) | |
| #define CS_reg(context) ((context)->SegCs) | |
| #define DS_reg(context) ((context)->SegDs) | |
| #define ES_reg(context) ((context)->SegEs) | |
| #define FS_reg(context) ((context)->SegFs) | |
| #define GS_reg(context) ((context)->SegGs) | |
| #define SS_reg(context) ((context)->SegSs) | |
| #define EFL_reg(context) ((context)->EFlags) | |
| #define EIP_reg(context) ((context)->Eip) | |
| #define ESP_reg(context) ((context)->Esp) | |
| #define AX_reg(context) (*(WORD*)&EAX_reg(context)) | |
| #define BX_reg(context) (*(WORD*)&EBX_reg(context)) | |
| #define CX_reg(context) (*(WORD*)&ECX_reg(context)) | |
| #define DX_reg(context) (*(WORD*)&EDX_reg(context)) | |
| #define SI_reg(context) (*(WORD*)&ESI_reg(context)) | |
| #define DI_reg(context) (*(WORD*)&EDI_reg(context)) | |
| #define BP_reg(context) (*(WORD*)&EBP_reg(context)) | |
| #define AL_reg(context) (*(BYTE*)&EAX_reg(context)) | |
| #define AH_reg(context) (*((BYTE*)&EAX_reg(context)+1)) | |
| #define BL_reg(context) (*(BYTE*)&EBX_reg(context)) | |
| #define BH_reg(context) (*((BYTE*)&EBX_reg(context)+1)) | |
| #define CL_reg(context) (*(BYTE*)&ECX_reg(context)) | |
| #define CH_reg(context) (*((BYTE*)&ECX_reg(context)+1)) | |
| #define DL_reg(context) (*(BYTE*)&EDX_reg(context)) | |
| #define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1)) | |
| #define IP_reg(context) (*(WORD*)&EIP_reg(context)) | |
| #define SP_reg(context) (*(WORD*)&ESP_reg(context)) | |
| #define FL_reg(context) (*(WORD*)&EFL_reg(context)) | |
| #define SET_CFLAG(context) (EFL_reg(context) |= 0x0001) | |
| #define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001) | |
| #define SET_ZFLAG(context) (EFL_reg(context) |= 0x0040) | |
| #define RESET_ZFLAG(context) (EFL_reg(context) &= ~0x0040) | |
| #define ISV86(context) (EFL_reg(context) & 0x00020000) | |
| #define V86BASE(context) ((context)->Dr7) /* ugly */ | |
| #endif /* __WINE__ */ | |
| /* | |
| * Exception codes | |
| */ | |
| #define STATUS_WAIT_0 0x00000000 | |
| #define STATUS_ABANDONED_WAIT_0 0x00000080 | |
| #define STATUS_USER_APC 0x000000C0 | |
| #define STATUS_TIMEOUT 0x00000102 | |
| #define STATUS_PENDING 0x00000103 | |
| #define STATUS_DATATYPE_MISALIGNMENT 0x80000002 | |
| #define STATUS_BREAKPOINT 0x80000003 | |
| #define STATUS_SINGLE_STEP 0x80000004 | |
| #define STATUS_ACCESS_VIOLATION 0xC0000005 | |
| #define STATUS_IN_PAGE_ERROR 0xC0000006 | |
| #define STATUS_NO_MEMORY 0xC0000017 | |
| #define STATUS_ILLEGAL_INSTRUCTION 0xC000001D | |
| #define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025 | |
| #define STATUS_INVALID_DISPOSITION 0xC0000026 | |
| #define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C | |
| #define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D | |
| #define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E | |
| #define STATUS_FLOAT_INEXACT_RESULT 0xC000008F | |
| #define STATUS_FLOAT_INVALID_OPERATION 0xC0000090 | |
| #define STATUS_FLOAT_OVERFLOW 0xC0000091 | |
| #define STATUS_FLOAT_STACK_CHECK 0xC0000092 | |
| #define STATUS_FLOAT_UNDERFLOW 0xC0000093 | |
| #define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094 | |
| #define STATUS_INTEGER_OVERFLOW 0xC0000095 | |
| #define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096 | |
| #define STATUS_STACK_OVERFLOW 0xC00000FD | |
| #define STATUS_CONTROL_C_EXIT 0xC000013A | |
| #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION | |
| #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT | |
| #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT | |
| #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP | |
| #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED | |
| #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND | |
| #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO | |
| #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT | |
| #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION | |
| #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW | |
| #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK | |
| #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW | |
| #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO | |
| #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW | |
| #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION | |
| #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR | |
| #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION | |
| #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION | |
| #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW | |
| #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION | |
| #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION | |
| #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE | |
| #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT | |
| #define MAXIMUM_WAIT_OBJECTS 64 | |
| #define MAXIMUM_SUSPEND_COUNT 127 | |
| /* | |
| * Return values from the actual exception handlers | |
| */ | |
| #define ExceptionContinueExecution 0 | |
| #define ExceptionContinueSearch 1 | |
| #define ExceptionNestedException 2 | |
| #define ExceptionCollidedUnwind 3 | |
| /* | |
| * Return values from filters in except() and from UnhandledExceptionFilter | |
| */ | |
| #define EXCEPTION_EXECUTE_HANDLER 1 | |
| #define EXCEPTION_CONTINUE_SEARCH 0 | |
| #define EXCEPTION_CONTINUE_EXECUTION -1 | |
| /* | |
| * From OS/2 2.0 exception handling | |
| * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD | |
| */ | |
| #define EH_NONCONTINUABLE 0x01 | |
| #define EH_UNWINDING 0x02 | |
| #define EH_EXIT_UNWIND 0x04 | |
| #define EH_STACK_INVALID 0x08 | |
| #define EH_NESTED_CALL 0x10 | |
| #define EXCEPTION_CONTINUABLE 0 | |
| #define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE | |
| /* | |
| * The exception record used by Win32 to give additional information | |
| * about exception to exception handlers. | |
| */ | |
| #define EXCEPTION_MAXIMUM_PARAMETERS 15 | |
| typedef struct __EXCEPTION_RECORD | |
| { | |
| DWORD ExceptionCode; | |
| DWORD ExceptionFlags; | |
| struct __EXCEPTION_RECORD *ExceptionRecord; | |
| LPVOID ExceptionAddress; | |
| DWORD NumberParameters; | |
| DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; | |
| } EXCEPTION_RECORD, *PEXCEPTION_RECORD; | |
| /* | |
| * The exception pointers structure passed to exception filters | |
| * in except() and the UnhandledExceptionFilter(). | |
| */ | |
| typedef struct _EXCEPTION_POINTERS | |
| { | |
| PEXCEPTION_RECORD ExceptionRecord; | |
| PCONTEXT ContextRecord; | |
| } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; | |
| #include "poppack.h" | |
| /* | |
| * function pointer to a exception filter | |
| */ | |
| typedef LONG (CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo); | |
| typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; | |
| DWORD WINAPI UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers ); | |
| LPTOP_LEVEL_EXCEPTION_FILTER | |
| WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ); | |
| /* | |
| * Here follows typedefs for security and tokens. | |
| */ | |
| /* | |
| * First a constant for the following typdefs. | |
| */ | |
| #define ANYSIZE_ARRAY 1 | |
| /* FIXME: Orphan. What does it point to? */ | |
| typedef PVOID PACCESS_TOKEN; | |
| /* | |
| * TOKEN_INFORMATION_CLASS | |
| */ | |
| typedef enum _TOKEN_INFORMATION_CLASS { | |
| TokenUser = 1, | |
| TokenGroups, | |
| TokenPrivileges, | |
| TokenOwner, | |
| TokenPrimaryGroup, | |
| TokenDefaultDacl, | |
| TokenSource, | |
| TokenType, | |
| TokenImpersonationLevel, | |
| TokenStatistics | |
| } TOKEN_INFORMATION_CLASS; | |
| #ifndef _SECURITY_DEFINED | |
| #define _SECURITY_DEFINED | |
| #include "pshpack1.h" | |
| typedef struct { | |
| BYTE Value[6]; | |
| } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; | |
| typedef struct _SID { | |
| BYTE Revision; | |
| BYTE SubAuthorityCount; | |
| SID_IDENTIFIER_AUTHORITY IdentifierAuthority; | |
| DWORD SubAuthority[1]; | |
| } SID,*PSID; | |
| #define SID_REVISION (1) /* Current revision */ | |
| #define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */ | |
| #define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */ | |
| /* | |
| * ACL | |
| */ | |
| typedef struct _ACL { | |
| BYTE AclRevision; | |
| BYTE Sbz1; | |
| WORD AclSize; | |
| WORD AceCount; | |
| WORD Sbz2; | |
| } ACL, *PACL; | |
| /* SECURITY_DESCRIPTOR */ | |
| #define SECURITY_DESCRIPTOR_REVISION 1 | |
| #define SECURITY_DESCRIPTOR_REVISION1 1 | |
| #define SE_OWNER_DEFAULTED 0x0001 | |
| #define SE_GROUP_DEFAULTED 0x0002 | |
| #define SE_DACL_PRESENT 0x0004 | |
| #define SE_DACL_DEFAULTED 0x0008 | |
| #define SE_SACL_PRESENT 0x0010 | |
| #define SE_SACL_DEFAULTED 0x0020 | |
| #define SE_SELF_RELATIVE 0x8000 | |
| typedef DWORD SECURITY_INFORMATION; | |
| typedef WORD SECURITY_DESCRIPTOR_CONTROL; | |
| /* The security descriptor structure */ | |
| typedef struct { | |
| BYTE Revision; | |
| BYTE Sbz1; | |
| SECURITY_DESCRIPTOR_CONTROL Control; | |
| PSID Owner; | |
| PSID Group; | |
| PACL Sacl; | |
| PACL Dacl; | |
| } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR; | |
| #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) | |
| #include "poppack.h" | |
| #endif /* _SECURITY_DEFINED */ | |
| #include "pshpack1.h" | |
| /* | |
| * SID_AND_ATTRIBUTES | |
| */ | |
| typedef struct _SID_AND_ATTRIBUTES { | |
| PSID Sid; | |
| DWORD Attributes; | |
| } SID_AND_ATTRIBUTES ; | |
| /* | |
| * TOKEN_USER | |
| */ | |
| typedef struct _TOKEN_USER { | |
| SID_AND_ATTRIBUTES User; | |
| } TOKEN_USER; | |
| /* | |
| * TOKEN_GROUPS | |
| */ | |
| typedef struct _TOKEN_GROUPS { | |
| DWORD GroupCount; | |
| SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; | |
| } TOKEN_GROUPS; | |
| /* | |
| * LUID_AND_ATTRIBUTES | |
| */ | |
| typedef struct _LARGE_INTEGER | |
| { | |
| DWORD LowPart; | |
| LONG HighPart; | |
| } LARGE_INTEGER, *LPLARGE_INTEGER, *PLARGE_INTEGER; | |
| typedef struct _ULARGE_INTEGER | |
| { | |
| DWORD LowPart; | |
| DWORD HighPart; | |
| } ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER; | |
| /* | |
| * Locally Unique Identifier | |
| */ | |
| typedef LARGE_INTEGER LUID,*PLUID; | |
| typedef struct _LUID_AND_ATTRIBUTES { | |
| LUID Luid; | |
| DWORD Attributes; | |
| } LUID_AND_ATTRIBUTES; | |
| /* | |
| * TOKEN_PRIVILEGES | |
| */ | |
| typedef struct _TOKEN_PRIVILEGES { | |
| DWORD PrivilegeCount; | |
| LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; | |
| } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES; | |
| /* | |
| * TOKEN_OWNER | |
| */ | |
| typedef struct _TOKEN_OWNER { | |
| PSID Owner; | |
| } TOKEN_OWNER; | |
| /* | |
| * TOKEN_PRIMARY_GROUP | |
| */ | |
| typedef struct _TOKEN_PRIMARY_GROUP { | |
| PSID PrimaryGroup; | |
| } TOKEN_PRIMARY_GROUP; | |
| /* | |
| * TOKEN_DEFAULT_DACL | |
| */ | |
| typedef struct _TOKEN_DEFAULT_DACL { | |
| PACL DefaultDacl; | |
| } TOKEN_DEFAULT_DACL; | |
| /* | |
| * TOKEN_SOURCEL | |
| */ | |
| typedef struct _TOKEN_SOURCE { | |
| char Sourcename[8]; | |
| LUID SourceIdentifier; | |
| } TOKEN_SOURCE; | |
| /* | |
| * TOKEN_TYPE | |
| */ | |
| typedef enum tagTOKEN_TYPE { | |
| TokenPrimary = 1, | |
| TokenImpersonation | |
| } TOKEN_TYPE; | |
| /* | |
| * SECURITY_IMPERSONATION_LEVEL | |
| */ | |
| typedef enum _SECURITY_IMPERSONATION_LEVEL { | |
| SecurityAnonymous, | |
| SecurityIdentification, | |
| SecurityImpersonation, | |
| SecurityDelegation | |
| } SECURITY_IMPERSONATION_LEVEL; | |
| typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, | |
| * PSECURITY_CONTEXT_TRACKING_MODE; | |
| /* | |
| * Quality of Service | |
| */ | |
| typedef struct _SECURITY_QUALITY_OF_SERVICE { | |
| DWORD Length; | |
| SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; | |
| SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; | |
| BOOL EffectiveOnly; | |
| } SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE; | |
| /* | |
| * TOKEN_STATISTICS | |
| */ | |
| 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; | |
| /* | |
| * ACLs of NT | |
| */ | |
| #define ACL_REVISION 2 | |
| #define ACL_REVISION1 1 | |
| #define ACL_REVISION2 2 | |
| /* ACEs, directly starting after an ACL */ | |
| typedef struct _ACE_HEADER { | |
| BYTE AceType; | |
| BYTE AceFlags; | |
| WORD AceSize; | |
| } ACE_HEADER,*PACE_HEADER; | |
| /* AceType */ | |
| #define ACCESS_ALLOWED_ACE_TYPE 0 | |
| #define ACCESS_DENIED_ACE_TYPE 1 | |
| #define SYSTEM_AUDIT_ACE_TYPE 2 | |
| #define SYSTEM_ALARM_ACE_TYPE 3 | |
| /* inherit AceFlags */ | |
| #define OBJECT_INHERIT_ACE 0x01 | |
| #define CONTAINER_INHERIT_ACE 0x02 | |
| #define NO_PROPAGATE_INHERIT_ACE 0x04 | |
| #define INHERIT_ONLY_ACE 0x08 | |
| #define VALID_INHERIT_FLAGS 0x0F | |
| /* AceFlags mask for what events we (should) audit */ | |
| #define SUCCESSFUL_ACCESS_ACE_FLAG 0x40 | |
| #define FAILED_ACCESS_ACE_FLAG 0x80 | |
| /* different ACEs depending on AceType | |
| * SidStart marks the begin of a SID | |
| * so the thing finally looks like this: | |
| * 0: ACE_HEADER | |
| * 4: ACCESS_MASK | |
| * 8... : SID | |
| */ | |
| typedef struct _ACCESS_ALLOWED_ACE { | |
| ACE_HEADER Header; | |
| DWORD Mask; | |
| DWORD SidStart; | |
| } ACCESS_ALLOWED_ACE,*PACCESS_ALLOWED_ACE; | |
| typedef struct _ACCESS_DENIED_ACE { | |
| ACE_HEADER Header; | |
| DWORD Mask; | |
| DWORD SidStart; | |
| } ACCESS_DENIED_ACE,*PACCESS_DENIED_ACE; | |
| typedef struct _SYSTEM_AUDIT_ACE { | |
| ACE_HEADER Header; | |
| DWORD Mask; | |
| DWORD SidStart; | |
| } SYSTEM_AUDIT_ACE,*PSYSTEM_AUDIT_ACE; | |
| typedef struct _SYSTEM_ALARM_ACE { | |
| ACE_HEADER Header; | |
| DWORD Mask; | |
| DWORD SidStart; | |
| } SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE; | |
| typedef enum tagSID_NAME_USE { | |
| SidTypeUser = 1, | |
| SidTypeGroup, | |
| SidTypeDomain, | |
| SidTypeAlias, | |
| SidTypeWellKnownGroup, | |
| SidTypeDeletedAccount, | |
| SidTypeInvalid, | |
| SidTypeUnknown | |
| } SID_NAME_USE,*PSID_NAME_USE; | |
| /* Access rights */ | |
| #define DELETE 0x00010000 | |
| #define READ_CONTROL 0x00020000 | |
| #define WRITE_DAC 0x00040000 | |
| #define WRITE_OWNER 0x00080000 | |
| #define SYNCHRONIZE 0x00100000 | |
| #define STANDARD_RIGHTS_REQUIRED 0x000f0000 | |
| #define STANDARD_RIGHTS_READ READ_CONTROL | |
| #define STANDARD_RIGHTS_WRITE READ_CONTROL | |
| #define STANDARD_RIGHTS_EXECUTE READ_CONTROL | |
| #define STANDARD_RIGHTS_ALL 0x001f0000 | |
| #define SPECIFIC_RIGHTS_ALL 0x0000ffff | |
| #define GENERIC_READ 0x80000000 | |
| #define GENERIC_WRITE 0x40000000 | |
| #define GENERIC_EXECUTE 0x20000000 | |
| #define GENERIC_ALL 0x10000000 | |
| #define EVENT_MODIFY_STATE 0x0002 | |
| #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) | |
| #define SEMAPHORE_MODIFY_STATE 0x0002 | |
| #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) | |
| #define MUTEX_MODIFY_STATE 0x0001 | |
| #define MUTEX_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1) | |
| #define PROCESS_TERMINATE 0x0001 | |
| #define PROCESS_CREATE_THREAD 0x0002 | |
| #define PROCESS_VM_OPERATION 0x0008 | |
| #define PROCESS_VM_READ 0x0010 | |
| #define PROCESS_VM_WRITE 0x0020 | |
| #define PROCESS_DUP_HANDLE 0x0040 | |
| #define PROCESS_CREATE_PROCESS 0x0080 | |
| #define PROCESS_SET_QUOTA 0x0100 | |
| #define PROCESS_SET_INFORMATION 0x0200 | |
| #define PROCESS_QUERY_INFORMATION 0x0400 | |
| #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff) | |
| #define THREAD_TERMINATE 0x0001 | |
| #define THREAD_SUSPEND_RESUME 0x0002 | |
| #define THREAD_GET_CONTEXT 0x0008 | |
| #define THREAD_SET_CONTEXT 0x0010 | |
| #define THREAD_SET_INFORMATION 0x0020 | |
| #define THREAD_QUERY_INFORMATION 0x0040 | |
| #define THREAD_SET_THREAD_TOKEN 0x0080 | |
| #define THREAD_IMPERSONATE 0x0100 | |
| #define THREAD_DIRECT_IMPERSONATION 0x0200 | |
| #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff) | |
| #define THREAD_BASE_PRIORITY_LOWRT 15 | |
| #define THREAD_BASE_PRIORITY_MAX 2 | |
| #define THREAD_BASE_PRIORITY_MIN -2 | |
| #define THREAD_BASE_PRIORITY_IDLE -15 | |
| #define FILE_READ_DATA 0x0001 /* file & pipe */ | |
| #define FILE_LIST_DIRECTORY 0x0001 /* directory */ | |
| #define FILE_WRITE_DATA 0x0002 /* file & pipe */ | |
| #define FILE_ADD_FILE 0x0002 /* directory */ | |
| #define FILE_APPEND_DATA 0x0004 /* file */ | |
| #define FILE_ADD_SUBDIRECTORY 0x0004 /* directory */ | |
| #define FILE_CREATE_PIPE_INSTANCE 0x0004 /* named pipe */ | |
| #define FILE_READ_EA 0x0008 /* file & directory */ | |
| #define FILE_READ_PROPERTIES FILE_READ_EA | |
| #define FILE_WRITE_EA 0x0010 /* file & directory */ | |
| #define FILE_WRITE_PROPERTIES FILE_WRITE_EA | |
| #define FILE_EXECUTE 0x0020 /* file */ | |
| #define FILE_TRAVERSE 0x0020 /* directory */ | |
| #define FILE_DELETE_CHILD 0x0040 /* directory */ | |
| #define FILE_READ_ATTRIBUTES 0x0080 /* all */ | |
| #define FILE_WRITE_ATTRIBUTES 0x0100 /* all */ | |
| #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1ff) | |
| #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | \ | |
| FILE_READ_ATTRIBUTES | FILE_READ_EA | \ | |
| SYNCHRONIZE) | |
| #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | \ | |
| FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | \ | |
| FILE_APPEND_DATA | SYNCHRONIZE) | |
| #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE | \ | |
| FILE_READ_ATTRIBUTES | SYNCHRONIZE) | |
| /* File attribute flags | |
| */ | |
| #define FILE_SHARE_READ 0x00000001L | |
| #define FILE_SHARE_WRITE 0x00000002L | |
| #define FILE_SHARE_DELETE 0x00000004L | |
| #define FILE_ATTRIBUTE_READONLY 0x00000001L | |
| #define FILE_ATTRIBUTE_HIDDEN 0x00000002L | |
| #define FILE_ATTRIBUTE_SYSTEM 0x00000004L | |
| #define FILE_ATTRIBUTE_LABEL 0x00000008L /* Not in Windows API */ | |
| #define FILE_ATTRIBUTE_DIRECTORY 0x00000010L | |
| #define FILE_ATTRIBUTE_ARCHIVE 0x00000020L | |
| #define FILE_ATTRIBUTE_NORMAL 0x00000080L | |
| #define FILE_ATTRIBUTE_TEMPORARY 0x00000100L | |
| #define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200L | |
| #define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400L | |
| #define FILE_ATTRIBUTE_COMPRESSED 0x00000800L | |
| #define FILE_ATTRIBUTE_OFFLINE 0x00001000L | |
| /* File alignments (NT) */ | |
| #define FILE_BYTE_ALIGNMENT 0x00000000 | |
| #define FILE_WORD_ALIGNMENT 0x00000001 | |
| #define FILE_LONG_ALIGNMENT 0x00000003 | |
| #define FILE_QUAD_ALIGNMENT 0x00000007 | |
| #define FILE_OCTA_ALIGNMENT 0x0000000f | |
| #define FILE_32_BYTE_ALIGNMENT 0x0000001f | |
| #define FILE_64_BYTE_ALIGNMENT 0x0000003f | |
| #define FILE_128_BYTE_ALIGNMENT 0x0000007f | |
| #define FILE_256_BYTE_ALIGNMENT 0x000000ff | |
| #define FILE_512_BYTE_ALIGNMENT 0x000001ff | |
| /* Registry security values */ | |
| #define OWNER_SECURITY_INFORMATION 0x00000001 | |
| #define GROUP_SECURITY_INFORMATION 0x00000002 | |
| #define DACL_SECURITY_INFORMATION 0x00000004 | |
| #define SACL_SECURITY_INFORMATION 0x00000008 | |
| #include "poppack.h" | |
| #endif /* __WINE_WINNT_H */ |