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
16 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_AMD64_CONTEXT
18 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_DEFAULT
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
28 #define KDBG_TAG 'GBDK'
30 typedef enum _DBGKD_MAJOR_TYPES
39 DBGKD_MAJOR_SINGULARITY
,
40 DBGKD_MAJOR_HYPERVISOR
,
45 // The major type is in the high byte
47 #define DBGKD_MAJOR_TYPE(MajorVersion) \
48 ((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
50 typedef struct _DBGKD_GET_VERSION32
54 USHORT ProtocolVersion
;
57 ULONG PsLoadedModuleList
;
59 USHORT ThCallbackStack
;
63 ULONG KeUserCallbackDispatcher
;
64 ULONG BreakpointWithStatus
;
65 ULONG DebuggerDataList
;
66 } DBGKD_GET_VERSION32
, *PDBGKD_GET_VERSION32
;
68 typedef struct _DBGKD_DEBUG_DATA_HEADER32
73 } DBGKD_DEBUG_DATA_HEADER32
, *PDBGKD_DEBUG_DATA_HEADER32
;
75 typedef struct _KDDEBUGGER_DATA32
77 DBGKD_DEBUG_DATA_HEADER32 Header
;
79 ULONG BreakpointWithStatus
;
81 USHORT ThCallbackStack
;
86 ULONG KeUserCallbackDispatcher
;
87 ULONG PsLoadedModuleList
;
88 ULONG PsActiveProcessHead
;
90 ULONG ExpSystemResourcesList
;
91 ULONG ExpPagedPoolDescriptor
;
92 ULONG ExpNumberOfPagedPools
;
93 ULONG KeTimeIncrement
;
94 ULONG KeBugCheckCallbackListHead
;
96 ULONG IopErrorLogListHead
;
97 ULONG ObpRootDirectoryObject
;
98 ULONG ObpTypeObjectType
;
99 ULONG MmSystemCacheStart
;
100 ULONG MmSystemCacheEnd
;
101 ULONG MmSystemCacheWs
;
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
;
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
;
145 typedef struct _DBGKD_GET_VERSION64
149 UCHAR ProtocolVersion
;
150 UCHAR KdSecondaryVersion
;
154 UCHAR MaxStateChange
;
159 ULONG64 PsLoadedModuleList
;
160 ULONG64 DebuggerDataList
;
161 } DBGKD_GET_VERSION64
, *PDBGKD_GET_VERSION64
;
163 typedef struct _DBGKD_DEBUG_DATA_HEADER64
168 } DBGKD_DEBUG_DATA_HEADER64
, *PDBGKD_DEBUG_DATA_HEADER64
;
170 typedef union _GCC_ULONG64
174 } GCC_ULONG64
, *PGCC_ULONG64
;
176 typedef struct _KDDEBUGGER_DATA64
178 DBGKD_DEBUG_DATA_HEADER64 Header
;
180 GCC_ULONG64 BreakpointWithStatus
;
181 ULONG64 SavedContext
;
182 USHORT ThCallbackStack
;
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
;
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
;
271 USHORT OffsetEprocessPeb
;
272 USHORT OffsetEprocessParentCID
;
273 USHORT OffsetEprocessDirectoryTableBase
;
275 USHORT OffsetPrcbDpcRoutine
;
276 USHORT OffsetPrcbCurrentThread
;
277 USHORT OffsetPrcbMhz
;
278 USHORT OffsetPrcbCpuType
;
279 USHORT OffsetPrcbVendorString
;
280 USHORT OffsetPrcbProcStateContext
;
281 USHORT OffsetPrcbNumber
;
283 GCC_ULONG64 KdPrintCircularBufferPtr
;
284 GCC_ULONG64 KdPrintBufferSize
;
285 GCC_ULONG64 KeLoaderBlock
;
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
;
304 USHORT Gdt64R3CmCode
;
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
;
313 } KDDEBUGGER_DATA64
, *PKDDEBUGGER_DATA64
;