#define SERVICE_DEMAND_START 0x00000003\r
#define SERVICE_DISABLED 0x00000004\r
\r
-\r
-\r
-//\r
-// Architecture Defined Contexts\r
-//\r
-#if defined(_M_IX86)\r
-#define SIZE_OF_80387_REGISTERS 80\r
-#define CONTEXT_i386 0x10000\r
-#define CONTEXT_i486 0x10000\r
-#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)\r
-#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)\r
-#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)\r
-#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)\r
-#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)\r
-#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)\r
-#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)\r
-#define MAXIMUM_SUPPORTED_EXTENSION 512\r
-\r
-#define EXCEPTION_READ_FAULT 0\r
-#define EXCEPTION_WRITE_FAULT 1\r
-#define EXCEPTION_EXECUTE_FAULT 8\r
-\r
-typedef struct _FLOATING_SAVE_AREA {\r
- ULONG ControlWord;\r
- ULONG StatusWord;\r
- ULONG TagWord;\r
- ULONG ErrorOffset;\r
- ULONG ErrorSelector;\r
- ULONG DataOffset;\r
- ULONG DataSelector;\r
- UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];\r
- ULONG Cr0NpxState;\r
-} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;\r
-\r
-typedef struct _CONTEXT {\r
- ULONG ContextFlags;\r
- ULONG Dr0;\r
- ULONG Dr1;\r
- ULONG Dr2;\r
- ULONG Dr3;\r
- ULONG Dr6;\r
- ULONG Dr7;\r
- FLOATING_SAVE_AREA FloatSave;\r
- ULONG SegGs;\r
- ULONG SegFs;\r
- ULONG SegEs;\r
- ULONG SegDs;\r
- ULONG Edi;\r
- ULONG Esi;\r
- ULONG Ebx;\r
- ULONG Edx;\r
- ULONG Ecx;\r
- ULONG Eax;\r
- ULONG Ebp;\r
- ULONG Eip;\r
- ULONG SegCs;\r
- ULONG EFlags;\r
- ULONG Esp;\r
- ULONG SegSs;\r
- UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];\r
-} CONTEXT;\r
-\r
-#elif defined(_M_AMD64)\r
-\r
-#define BitTest _bittest\r
-#define BitTest64 _bittest64\r
-#define BitTestAndComplement _bittestandcomplement\r
-#define BitTestAndComplement64 _bittestandcomplement64\r
-#define BitTestAndSet _bittestandset\r
-#define BitTestAndSet64 _bittestandset64\r
-#define BitTestAndReset _bittestandreset\r
-#define BitTestAndReset64 _bittestandreset64\r
-#define InterlockedBitTestAndSet _interlockedbittestandset\r
-#define InterlockedBitTestAndSet64 _interlockedbittestandset64\r
-#define InterlockedBitTestAndReset _interlockedbittestandreset\r
-#define InterlockedBitTestAndReset64 _interlockedbittestandreset64\r
-\r
-#elif defined(_M_ARM)\r
-\r
-//\r
-// FIXME: Move to armddk.h?\r
-//\r
-\r
-/* The following flags control the contents of the CONTEXT structure. */\r
-\r
-#define CONTEXT_ARM 0x0000040\r
-#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L)\r
-#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)\r
-\r
-#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)\r
-\r
-typedef struct _CONTEXT {\r
- /* The flags values within this flag control the contents of\r
- a CONTEXT record.\r
-\r
- If the context record is used as an input parameter, then\r
- for each portion of the context record controlled by a flag\r
- whose value is set, it is assumed that that portion of the\r
- context record contains valid context. If the context record\r
- is being used to modify a thread's context, then only that\r
- portion of the threads context will be modified.\r
-\r
- If the context record is used as an IN OUT parameter to capture\r
- the context of a thread, then only those portions of the thread's\r
- context corresponding to set flags will be returned.\r
-\r
- The context record is never used as an OUT only parameter. */\r
-\r
- ULONG ContextFlags;\r
-\r
- /* This section is specified/returned if the ContextFlags word contains\r
- the flag CONTEXT_INTEGER. */\r
- ULONG R0;\r
- ULONG R1;\r
- ULONG R2;\r
- ULONG R3;\r
- ULONG R4;\r
- ULONG R5;\r
- ULONG R6;\r
- ULONG R7;\r
- ULONG R8;\r
- ULONG R9;\r
- ULONG R10;\r
- ULONG R11;\r
- ULONG R12;\r
-\r
- ULONG Sp;\r
- ULONG Lr;\r
- ULONG Pc;\r
- ULONG Psr;\r
-} CONTEXT;\r
-\r
-#else\r
-#error "Undefined processor architecture"\r
-#endif\r
-\r
-\r
-\r
//\r
// Exception Records\r
//\r