[PSDK]
[reactos.git] / include / psdk / wdbgexts.h
1 #ifndef _WDBGEXTS_
2 #define _WDBGEXTS_
3
4 enum
5 {
6 DBGKD_SIMULATION_NONE,
7 DBGKD_SIMULATION_EXDI
8 };
9
10 #define KD_SECONDARY_VERSION_DEFAULT 0
11 #define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_1 0
12 #define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_2 1
13 #define KD_SECONDARY_VERSION_AMD64_CONTEXT 2
14
15 #if defined(_AMD64_)
16 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_AMD64_CONTEXT
17 #else
18 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_DEFAULT
19 #endif
20
21 #define DBGKD_VERS_FLAG_MP 0x0001
22 #define DBGKD_VERS_FLAG_DATA 0x0002
23 #define DBGKD_VERS_FLAG_PTR64 0x0004
24 #define DBGKD_VERS_FLAG_NOMM 0x0008
25 #define DBGKD_VERS_FLAG_HSS 0x0010
26 #define DBGKD_VERS_FLAG_PARTITIONS 0x0020
27
28 #define KDBG_TAG 'GBDK'
29
30 typedef enum _DBGKD_MAJOR_TYPES
31 {
32 DBGKD_MAJOR_NT,
33 DBGKD_MAJOR_XBOX,
34 DBGKD_MAJOR_BIG,
35 DBGKD_MAJOR_EXDI,
36 DBGKD_MAJOR_NTBD,
37 DBGKD_MAJOR_EFI,
38 DBGKD_MAJOR_TNT,
39 DBGKD_MAJOR_SINGULARITY,
40 DBGKD_MAJOR_HYPERVISOR,
41 DBGKD_MAJOR_COUNT
42 } DBGKD_MAJOR_TYPES;
43
44 //
45 // The major type is in the high byte
46 //
47 #define DBGKD_MAJOR_TYPE(MajorVersion) \
48 ((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
49
50 typedef struct _DBGKD_GET_VERSION32
51 {
52 USHORT MajorVersion;
53 USHORT MinorVersion;
54 USHORT ProtocolVersion;
55 USHORT Flags;
56 ULONG KernBase;
57 ULONG PsLoadedModuleList;
58 USHORT MachineType;
59 USHORT ThCallbackStack;
60 USHORT NextCallback;
61 USHORT FramePointer;
62 ULONG KiCallUserMode;
63 ULONG KeUserCallbackDispatcher;
64 ULONG BreakpointWithStatus;
65 ULONG DebuggerDataList;
66 } DBGKD_GET_VERSION32, *PDBGKD_GET_VERSION32;
67
68 typedef struct _DBGKD_DEBUG_DATA_HEADER32
69 {
70 LIST_ENTRY32 List;
71 ULONG OwnerTag;
72 ULONG Size;
73 } DBGKD_DEBUG_DATA_HEADER32, *PDBGKD_DEBUG_DATA_HEADER32;
74
75 typedef struct _KDDEBUGGER_DATA32
76 {
77 DBGKD_DEBUG_DATA_HEADER32 Header;
78 ULONG KernBase;
79 ULONG BreakpointWithStatus;
80 ULONG SavedContext;
81 USHORT ThCallbackStack;
82 USHORT NextCallback;
83 USHORT FramePointer;
84 USHORT PaeEnabled:1;
85 ULONG KiCallUserMode;
86 ULONG KeUserCallbackDispatcher;
87 ULONG PsLoadedModuleList;
88 ULONG PsActiveProcessHead;
89 ULONG PspCidTable;
90 ULONG ExpSystemResourcesList;
91 ULONG ExpPagedPoolDescriptor;
92 ULONG ExpNumberOfPagedPools;
93 ULONG KeTimeIncrement;
94 ULONG KeBugCheckCallbackListHead;
95 ULONG KiBugcheckData;
96 ULONG IopErrorLogListHead;
97 ULONG ObpRootDirectoryObject;
98 ULONG ObpTypeObjectType;
99 ULONG MmSystemCacheStart;
100 ULONG MmSystemCacheEnd;
101 ULONG MmSystemCacheWs;
102 ULONG MmPfnDatabase;
103 ULONG MmSystemPtesStart;
104 ULONG MmSystemPtesEnd;
105 ULONG MmSubsectionBase;
106 ULONG MmNumberOfPagingFiles;
107 ULONG MmLowestPhysicalPage;
108 ULONG MmHighestPhysicalPage;
109 ULONG MmNumberOfPhysicalPages;
110 ULONG MmMaximumNonPagedPoolInBytes;
111 ULONG MmNonPagedSystemStart;
112 ULONG MmNonPagedPoolStart;
113 ULONG MmNonPagedPoolEnd;
114 ULONG MmPagedPoolStart;
115 ULONG MmPagedPoolEnd;
116 ULONG MmPagedPoolInformation;
117 ULONG MmPageSize;
118 ULONG MmSizeOfPagedPoolInBytes;
119 ULONG MmTotalCommitLimit;
120 ULONG MmTotalCommittedPages;
121 ULONG MmSharedCommit;
122 ULONG MmDriverCommit;
123 ULONG MmProcessCommit;
124 ULONG MmPagedPoolCommit;
125 ULONG MmExtendedCommit;
126 ULONG MmZeroedPageListHead;
127 ULONG MmFreePageListHead;
128 ULONG MmStandbyPageListHead;
129 ULONG MmModifiedPageListHead;
130 ULONG MmModifiedNoWritePageListHead;
131 ULONG MmAvailablePages;
132 ULONG MmResidentAvailablePages;
133 ULONG PoolTrackTable;
134 ULONG NonPagedPoolDescriptor;
135 ULONG MmHighestUserAddress;
136 ULONG MmSystemRangeStart;
137 ULONG MmUserProbeAddress;
138 ULONG KdPrintCircularBuffer;
139 ULONG KdPrintCircularBufferEnd;
140 ULONG KdPrintWritePointer;
141 ULONG KdPrintRolloverCount;
142 ULONG MmLoadedUserImageList;
143 } KDDEBUGGER_DATA32, *PKDDEBUGGER_DATA32;
144
145 typedef struct _DBGKD_GET_VERSION64
146 {
147 USHORT MajorVersion;
148 USHORT MinorVersion;
149 UCHAR ProtocolVersion;
150 UCHAR KdSecondaryVersion;
151 USHORT Flags;
152 USHORT MachineType;
153 UCHAR MaxPacketType;
154 UCHAR MaxStateChange;
155 UCHAR MaxManipulate;
156 UCHAR Simulation;
157 USHORT Unused[1];
158 ULONG64 KernBase;
159 ULONG64 PsLoadedModuleList;
160 ULONG64 DebuggerDataList;
161 } DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64;
162
163 typedef struct _DBGKD_DEBUG_DATA_HEADER64
164 {
165 LIST_ENTRY64 List;
166 ULONG OwnerTag;
167 ULONG Size;
168 } DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64;
169
170 typedef union _GCC_ULONG64
171 {
172 ULONG_PTR Pointer;
173 ULONG64 RealPointer;
174 } GCC_ULONG64, *PGCC_ULONG64;
175
176 typedef struct _KDDEBUGGER_DATA64
177 {
178 DBGKD_DEBUG_DATA_HEADER64 Header;
179 ULONG64 KernBase;
180 GCC_ULONG64 BreakpointWithStatus;
181 ULONG64 SavedContext;
182 USHORT ThCallbackStack;
183 USHORT NextCallback;
184 USHORT FramePointer;
185 USHORT PaeEnabled:1;
186 GCC_ULONG64 KiCallUserMode;
187 ULONG64 KeUserCallbackDispatcher;
188 GCC_ULONG64 PsLoadedModuleList;
189 GCC_ULONG64 PsActiveProcessHead;
190 GCC_ULONG64 PspCidTable;
191 GCC_ULONG64 ExpSystemResourcesList;
192 GCC_ULONG64 ExpPagedPoolDescriptor;
193 GCC_ULONG64 ExpNumberOfPagedPools;
194 GCC_ULONG64 KeTimeIncrement;
195 GCC_ULONG64 KeBugCheckCallbackListHead;
196 GCC_ULONG64 KiBugcheckData;
197 GCC_ULONG64 IopErrorLogListHead;
198 GCC_ULONG64 ObpRootDirectoryObject;
199 GCC_ULONG64 ObpTypeObjectType;
200 GCC_ULONG64 MmSystemCacheStart;
201 GCC_ULONG64 MmSystemCacheEnd;
202 GCC_ULONG64 MmSystemCacheWs;
203 GCC_ULONG64 MmPfnDatabase;
204 GCC_ULONG64 MmSystemPtesStart;
205 GCC_ULONG64 MmSystemPtesEnd;
206 GCC_ULONG64 MmSubsectionBase;
207 GCC_ULONG64 MmNumberOfPagingFiles;
208 GCC_ULONG64 MmLowestPhysicalPage;
209 GCC_ULONG64 MmHighestPhysicalPage;
210 GCC_ULONG64 MmNumberOfPhysicalPages;
211 GCC_ULONG64 MmMaximumNonPagedPoolInBytes;
212 GCC_ULONG64 MmNonPagedSystemStart;
213 GCC_ULONG64 MmNonPagedPoolStart;
214 GCC_ULONG64 MmNonPagedPoolEnd;
215 GCC_ULONG64 MmPagedPoolStart;
216 GCC_ULONG64 MmPagedPoolEnd;
217 GCC_ULONG64 MmPagedPoolInformation;
218 ULONG64 MmPageSize;
219 GCC_ULONG64 MmSizeOfPagedPoolInBytes;
220 GCC_ULONG64 MmTotalCommitLimit;
221 GCC_ULONG64 MmTotalCommittedPages;
222 GCC_ULONG64 MmSharedCommit;
223 GCC_ULONG64 MmDriverCommit;
224 GCC_ULONG64 MmProcessCommit;
225 GCC_ULONG64 MmPagedPoolCommit;
226 GCC_ULONG64 MmExtendedCommit;
227 GCC_ULONG64 MmZeroedPageListHead;
228 GCC_ULONG64 MmFreePageListHead;
229 GCC_ULONG64 MmStandbyPageListHead;
230 GCC_ULONG64 MmModifiedPageListHead;
231 GCC_ULONG64 MmModifiedNoWritePageListHead;
232 GCC_ULONG64 MmAvailablePages;
233 GCC_ULONG64 MmResidentAvailablePages;
234 GCC_ULONG64 PoolTrackTable;
235 GCC_ULONG64 NonPagedPoolDescriptor;
236 GCC_ULONG64 MmHighestUserAddress;
237 GCC_ULONG64 MmSystemRangeStart;
238 GCC_ULONG64 MmUserProbeAddress;
239 GCC_ULONG64 KdPrintCircularBuffer;
240 GCC_ULONG64 KdPrintCircularBufferEnd;
241 GCC_ULONG64 KdPrintWritePointer;
242 GCC_ULONG64 KdPrintRolloverCount;
243 GCC_ULONG64 MmLoadedUserImageList;
244 GCC_ULONG64 NtBuildLab;
245 GCC_ULONG64 KiNormalSystemCall;
246 GCC_ULONG64 KiProcessorBlock;
247 GCC_ULONG64 MmUnloadedDrivers;
248 GCC_ULONG64 MmLastUnloadedDriver;
249 GCC_ULONG64 MmTriageActionTaken;
250 GCC_ULONG64 MmSpecialPoolTag;
251 GCC_ULONG64 KernelVerifier;
252 GCC_ULONG64 MmVerifierData;
253 GCC_ULONG64 MmAllocatedNonPagedPool;
254 GCC_ULONG64 MmPeakCommitment;
255 GCC_ULONG64 MmTotalCommitLimitMaximum;
256 GCC_ULONG64 CmNtCSDVersion;
257 GCC_ULONG64 MmPhysicalMemoryBlock;
258 GCC_ULONG64 MmSessionBase;
259 GCC_ULONG64 MmSessionSize;
260 GCC_ULONG64 MmSystemParentTablePage;
261 GCC_ULONG64 MmVirtualTranslationBase;
262 USHORT OffsetKThreadNextProcessor;
263 USHORT OffsetKThreadTeb;
264 USHORT OffsetKThreadKernelStack;
265 USHORT OffsetKThreadInitialStack;
266 USHORT OffsetKThreadApcProcess;
267 USHORT OffsetKThreadState;
268 USHORT OffsetKThreadBStore;
269 USHORT OffsetKThreadBStoreLimit;
270 USHORT SizeEProcess;
271 USHORT OffsetEprocessPeb;
272 USHORT OffsetEprocessParentCID;
273 USHORT OffsetEprocessDirectoryTableBase;
274 USHORT SizePrcb;
275 USHORT OffsetPrcbDpcRoutine;
276 USHORT OffsetPrcbCurrentThread;
277 USHORT OffsetPrcbMhz;
278 USHORT OffsetPrcbCpuType;
279 USHORT OffsetPrcbVendorString;
280 USHORT OffsetPrcbProcStateContext;
281 USHORT OffsetPrcbNumber;
282 USHORT SizeEThread;
283 GCC_ULONG64 KdPrintCircularBufferPtr;
284 GCC_ULONG64 KdPrintBufferSize;
285 GCC_ULONG64 KeLoaderBlock;
286 USHORT SizePcr;
287 USHORT OffsetPcrSelfPcr;
288 USHORT OffsetPcrCurrentPrcb;
289 USHORT OffsetPcrContainedPrcb;
290 USHORT OffsetPcrInitialBStore;
291 USHORT OffsetPcrBStoreLimit;
292 USHORT OffsetPcrInitialStack;
293 USHORT OffsetPcrStackLimit;
294 USHORT OffsetPrcbPcrPage;
295 USHORT OffsetPrcbProcStateSpecialReg;
296 USHORT GdtR0Code;
297 USHORT GdtR0Data;
298 USHORT GdtR0Pcr;
299 USHORT GdtR3Code;
300 USHORT GdtR3Data;
301 USHORT GdtR3Teb;
302 USHORT GdtLdt;
303 USHORT GdtTss;
304 USHORT Gdt64R3CmCode;
305 USHORT Gdt64R3CmTeb;
306 GCC_ULONG64 IopNumTriageDumpDataBlocks;
307 GCC_ULONG64 IopTriageDumpDataBlocks;
308 #if 0 // Longhorn/Vista and later
309 GCC_ULONG64 VfCrashDataBlock;
310 GCC_ULONG64 MmBadPagesDetected;
311 GCC_ULONG64 MmZeroedPageSingleBitErrorsDetected;
312 #endif
313 } KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64;
314
315 #endif