ReactOS 0.4.17-dev-966-gf06eace
winnt.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <psdk/winnt.h>
5
6/* Wine's own <winnt.h> exposes ARRAY_SIZE to modules built with __WINESRC__ */
7#ifdef __WINESRC__
8# ifndef ARRAY_SIZE
9# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
10# endif
11#endif
12
13#define CONTEXT_i386 0x10000
14#define CONTEXT_i486 0x10000
15
16#define CONTEXT_I386_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
17#define CONTEXT_I386_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
18#define CONTEXT_I386_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
19#define CONTEXT_I386_FLOATING_POINT (CONTEXT_i386 | 0x0008) /* 387 state */
20#define CONTEXT_I386_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010) /* DB 0-3,6,7 */
21#define CONTEXT_I386_EXTENDED_REGISTERS (CONTEXT_i386 | 0x0020)
22#define CONTEXT_I386_XSTATE (CONTEXT_i386 | 0x0040)
23#define CONTEXT_I386_FULL (CONTEXT_I386_CONTROL | CONTEXT_I386_INTEGER | CONTEXT_I386_SEGMENTS)
24#define CONTEXT_I386_ALL (CONTEXT_I386_FULL | CONTEXT_I386_FLOATING_POINT | CONTEXT_I386_DEBUG_REGISTERS | CONTEXT_I386_EXTENDED_REGISTERS)
25
27#ifdef _M_IX86
28typedef CONTEXT I386_CONTEXT;
29#else
31#endif
32
33#define CONTEXT_AMD64 0x100000
34
35#define CONTEXT_AMD64_CONTROL (CONTEXT_AMD64 | 0x0001)
36#define CONTEXT_AMD64_INTEGER (CONTEXT_AMD64 | 0x0002)
37#define CONTEXT_AMD64_SEGMENTS (CONTEXT_AMD64 | 0x0004)
38#define CONTEXT_AMD64_FLOATING_POINT (CONTEXT_AMD64 | 0x0008)
39#define CONTEXT_AMD64_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x0010)
40#define CONTEXT_AMD64_XSTATE (CONTEXT_AMD64 | 0x0040)
41#define CONTEXT_AMD64_FULL (CONTEXT_AMD64_CONTROL | CONTEXT_AMD64_INTEGER | CONTEXT_AMD64_FLOATING_POINT)
42#define CONTEXT_AMD64_ALL (CONTEXT_AMD64_CONTROL | CONTEXT_AMD64_INTEGER | CONTEXT_AMD64_SEGMENTS | CONTEXT_AMD64_FLOATING_POINT | CONTEXT_AMD64_DEBUG_REGISTERS)
43
44typedef struct DECLSPEC_ALIGN(16) _AMD64_CONTEXT {
45 DWORD64 P1Home; /* 000 */
46 DWORD64 P2Home; /* 008 */
47 DWORD64 P3Home; /* 010 */
48 DWORD64 P4Home; /* 018 */
49 DWORD64 P5Home; /* 020 */
50 DWORD64 P6Home; /* 028 */
51
52 /* Control flags */
53 DWORD ContextFlags; /* 030 */
54 DWORD MxCsr; /* 034 */
55
56 /* Segment */
57 WORD SegCs; /* 038 */
58 WORD SegDs; /* 03a */
59 WORD SegEs; /* 03c */
60 WORD SegFs; /* 03e */
61 WORD SegGs; /* 040 */
62 WORD SegSs; /* 042 */
63 DWORD EFlags; /* 044 */
64
65 /* Debug */
66 DWORD64 Dr0; /* 048 */
67 DWORD64 Dr1; /* 050 */
68 DWORD64 Dr2; /* 058 */
69 DWORD64 Dr3; /* 060 */
70 DWORD64 Dr6; /* 068 */
71 DWORD64 Dr7; /* 070 */
72
73 /* Integer */
74 DWORD64 Rax; /* 078 */
75 DWORD64 Rcx; /* 080 */
76 DWORD64 Rdx; /* 088 */
77 DWORD64 Rbx; /* 090 */
78 DWORD64 Rsp; /* 098 */
79 DWORD64 Rbp; /* 0a0 */
80 DWORD64 Rsi; /* 0a8 */
81 DWORD64 Rdi; /* 0b0 */
82 DWORD64 R8; /* 0b8 */
83 DWORD64 R9; /* 0c0 */
84 DWORD64 R10; /* 0c8 */
85 DWORD64 R11; /* 0d0 */
86 DWORD64 R12; /* 0d8 */
87 DWORD64 R13; /* 0e0 */
88 DWORD64 R14; /* 0e8 */
89 DWORD64 R15; /* 0f0 */
90
91 /* Counter */
92 DWORD64 Rip; /* 0f8 */
93
94 /* Floating point */
95 union {
96 XMM_SAVE_AREA32 FltSave; /* 100 */
97 struct {
98 M128A Header[2]; /* 100 */
99 M128A Legacy[8]; /* 120 */
100 M128A Xmm0; /* 1a0 */
101 M128A Xmm1; /* 1b0 */
102 M128A Xmm2; /* 1c0 */
103 M128A Xmm3; /* 1d0 */
104 M128A Xmm4; /* 1e0 */
105 M128A Xmm5; /* 1f0 */
106 M128A Xmm6; /* 200 */
107 M128A Xmm7; /* 210 */
108 M128A Xmm8; /* 220 */
109 M128A Xmm9; /* 230 */
110 M128A Xmm10; /* 240 */
111 M128A Xmm11; /* 250 */
112 M128A Xmm12; /* 260 */
113 M128A Xmm13; /* 270 */
114 M128A Xmm14; /* 280 */
115 M128A Xmm15; /* 290 */
118
119 /* Vector */
120 M128A VectorRegister[26]; /* 300 */
121 DWORD64 VectorControl; /* 4a0 */
122
123 /* Debug control */
124 DWORD64 DebugControl; /* 4a8 */
125 DWORD64 LastBranchToRip; /* 4b0 */
126 DWORD64 LastBranchFromRip; /* 4b8 */
127 DWORD64 LastExceptionToRip; /* 4c0 */
128 DWORD64 LastExceptionFromRip; /* 4c8 */
130
131typedef struct _YMMCONTEXT
132{
149}
151
152typedef struct _XSTATE
153{
159
160#define CONTEXT_UNWOUND_TO_CALL 0x20000000
161
162#define CONTEXT_EXCEPTION_ACTIVE 0x8000000
163#define CONTEXT_SERVICE_ACTIVE 0x10000000
164#define CONTEXT_EXCEPTION_REQUEST 0x40000000
165#define CONTEXT_EXCEPTION_REPORTING 0x80000000
166
167// HACK!
168#ifdef __ROS_LONG64__
169#define ReadAcquire(x) ReadAcquire((volatile long*)(x))
170#define WriteRelease(x, y) WriteRelease((volatile long*)(x), (y))
171#undef BitScanForward
172#undef BitScanReverse
173#define BitScanForward(idx, mask) _BitScanForward((unsigned long *)(idx), (mask))
174#define BitScanReverse(idx, mask) _BitScanReverse((unsigned long *)(idx), (mask))
175#endif
176
177#ifndef __WINE_WINNT_EXCEPTION_REGISTRATION_RECORD
178#define __WINE_WINNT_EXCEPTION_REGISTRATION_RECORD
180
183
185{
186 struct _EXCEPTION_REGISTRATION_RECORD *Prev; // This is 'Next' in MS' headers
189#endif // __WINE_WINNT_EXCEPTION_REGISTRATION_RECORD
190
191#define HEAP_SHARED 0x04000000
@ R15
Definition: amd64_sup.c:13
@ R13
Definition: amd64_sup.c:13
@ R12
Definition: amd64_sup.c:13
@ R9
Definition: amd64_sup.c:13
@ R14
Definition: amd64_sup.c:13
@ R8
Definition: amd64_sup.c:13
@ R11
Definition: amd64_sup.c:13
@ R10
Definition: amd64_sup.c:13
Definition: Header.h:9
#define CDECL
Definition: compat.h:29
CONTEXT * PCONTEXT
Definition: compat.h:699
struct _EXCEPTION_RECORD * PEXCEPTION_RECORD
#define DECLSPEC_ALIGN(x)
Definition: corecrt.h:141
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned __int64 ULONG64
Definition: imports.h:198
#define DWORD
Definition: nt_native.h:44
#define DUMMYUNIONNAME
Definition: pecoff.h:91
#define DUMMYSTRUCTNAME
Definition: pecoff.h:117
XSAVE_FORMAT XMM_SAVE_AREA32
Definition: ke.h:35
PEXCEPTION_ROUTINE Handler
Definition: compat.h:727
struct _EXCEPTION_REGISTRATION_RECORD * Prev
Definition: exception.h:45
Definition: winnt.h:153
ULONG64 Mask
Definition: winnt.h:154
YMMCONTEXT YmmContext
Definition: winnt.h:157
ULONG64 CompactionMask
Definition: winnt.h:155
M128A Ymm0
Definition: winnt.h:133
M128A Ymm15
Definition: winnt.h:148
M128A Ymm5
Definition: winnt.h:138
M128A Ymm1
Definition: winnt.h:134
M128A Ymm10
Definition: winnt.h:143
M128A Ymm6
Definition: winnt.h:139
M128A Ymm8
Definition: winnt.h:141
M128A Ymm14
Definition: winnt.h:147
M128A Ymm3
Definition: winnt.h:136
M128A Ymm9
Definition: winnt.h:142
M128A Ymm7
Definition: winnt.h:140
M128A Ymm11
Definition: winnt.h:144
M128A Ymm12
Definition: winnt.h:145
M128A Ymm2
Definition: winnt.h:135
M128A Ymm13
Definition: winnt.h:146
M128A Ymm4
Definition: winnt.h:137
uint64_t DWORD64
Definition: typedefs.h:67
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
struct _YMMCONTEXT YMMCONTEXT
WOW64_CONTEXT I386_CONTEXT
Definition: winnt.h:30
struct _XSTATE * PXSTATE
struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD
DWORD(CDECL * PEXCEPTION_HANDLER)(PEXCEPTION_RECORD, struct _EXCEPTION_REGISTRATION_RECORD *, PCONTEXT, struct _EXCEPTION_REGISTRATION_RECORD **)
Definition: winnt.h:181
AMD64_CONTEXT
Definition: winnt.h:129
struct _XSTATE XSTATE
struct _YMMCONTEXT * PYMMCONTEXT
WOW64_FLOATING_SAVE_AREA I386_FLOATING_SAVE_AREA
Definition: winnt.h:26
M128A
Definition: ketypes.h:1008