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
,
46 // The major type is in the high byte
48 #define DBGKD_MAJOR_TYPE(MajorVersion) \
49 ((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
51 typedef struct _DBGKD_GET_VERSION32
55 USHORT ProtocolVersion
;
58 ULONG PsLoadedModuleList
;
60 USHORT ThCallbackStack
;
64 ULONG KeUserCallbackDispatcher
;
65 ULONG BreakpointWithStatus
;
66 ULONG DebuggerDataList
;
67 } DBGKD_GET_VERSION32
, *PDBGKD_GET_VERSION32
;
69 typedef struct _DBGKD_DEBUG_DATA_HEADER32
74 } DBGKD_DEBUG_DATA_HEADER32
, *PDBGKD_DEBUG_DATA_HEADER32
;
76 typedef struct _KDDEBUGGER_DATA32
78 DBGKD_DEBUG_DATA_HEADER32 Header
;
80 ULONG BreakpointWithStatus
;
82 USHORT ThCallbackStack
;
87 ULONG KeUserCallbackDispatcher
;
88 ULONG PsLoadedModuleList
;
89 ULONG PsActiveProcessHead
;
91 ULONG ExpSystemResourcesList
;
92 ULONG ExpPagedPoolDescriptor
;
93 ULONG ExpNumberOfPagedPools
;
94 ULONG KeTimeIncrement
;
95 ULONG KeBugCheckCallbackListHead
;
97 ULONG IopErrorLogListHead
;
98 ULONG ObpRootDirectoryObject
;
99 ULONG ObpTypeObjectType
;
100 ULONG MmSystemCacheStart
;
101 ULONG MmSystemCacheEnd
;
102 ULONG MmSystemCacheWs
;
104 ULONG MmSystemPtesStart
;
105 ULONG MmSystemPtesEnd
;
106 ULONG MmSubsectionBase
;
107 ULONG MmNumberOfPagingFiles
;
108 ULONG MmLowestPhysicalPage
;
109 ULONG MmHighestPhysicalPage
;
110 ULONG MmNumberOfPhysicalPages
;
111 ULONG MmMaximumNonPagedPoolInBytes
;
112 ULONG MmNonPagedSystemStart
;
113 ULONG MmNonPagedPoolStart
;
114 ULONG MmNonPagedPoolEnd
;
115 ULONG MmPagedPoolStart
;
116 ULONG MmPagedPoolEnd
;
117 ULONG MmPagedPoolInformation
;
119 ULONG MmSizeOfPagedPoolInBytes
;
120 ULONG MmTotalCommitLimit
;
121 ULONG MmTotalCommittedPages
;
122 ULONG MmSharedCommit
;
123 ULONG MmDriverCommit
;
124 ULONG MmProcessCommit
;
125 ULONG MmPagedPoolCommit
;
126 ULONG MmExtendedCommit
;
127 ULONG MmZeroedPageListHead
;
128 ULONG MmFreePageListHead
;
129 ULONG MmStandbyPageListHead
;
130 ULONG MmModifiedPageListHead
;
131 ULONG MmModifiedNoWritePageListHead
;
132 ULONG MmAvailablePages
;
133 ULONG MmResidentAvailablePages
;
134 ULONG PoolTrackTable
;
135 ULONG NonPagedPoolDescriptor
;
136 ULONG MmHighestUserAddress
;
137 ULONG MmSystemRangeStart
;
138 ULONG MmUserProbeAddress
;
139 ULONG KdPrintCircularBuffer
;
140 ULONG KdPrintCircularBufferEnd
;
141 ULONG KdPrintWritePointer
;
142 ULONG KdPrintRolloverCount
;
143 ULONG MmLoadedUserImageList
;
144 } KDDEBUGGER_DATA32
, *PKDDEBUGGER_DATA32
;
146 typedef struct _DBGKD_GET_VERSION64
150 UCHAR ProtocolVersion
;
151 UCHAR KdSecondaryVersion
;
155 UCHAR MaxStateChange
;
160 ULONG64 PsLoadedModuleList
;
161 ULONG64 DebuggerDataList
;
162 } DBGKD_GET_VERSION64
, *PDBGKD_GET_VERSION64
;
164 typedef struct _DBGKD_DEBUG_DATA_HEADER64
169 } DBGKD_DEBUG_DATA_HEADER64
, *PDBGKD_DEBUG_DATA_HEADER64
;
171 typedef union _GCC_ULONG64
175 } GCC_ULONG64
, *PGCC_ULONG64
;
177 typedef struct _KDDEBUGGER_DATA64
179 DBGKD_DEBUG_DATA_HEADER64 Header
;
181 GCC_ULONG64 BreakpointWithStatus
;
182 ULONG64 SavedContext
;
183 USHORT ThCallbackStack
;
187 GCC_ULONG64 KiCallUserMode
;
188 ULONG64 KeUserCallbackDispatcher
;
189 GCC_ULONG64 PsLoadedModuleList
;
190 GCC_ULONG64 PsActiveProcessHead
;
191 GCC_ULONG64 PspCidTable
;
192 GCC_ULONG64 ExpSystemResourcesList
;
193 GCC_ULONG64 ExpPagedPoolDescriptor
;
194 GCC_ULONG64 ExpNumberOfPagedPools
;
195 GCC_ULONG64 KeTimeIncrement
;
196 GCC_ULONG64 KeBugCheckCallbackListHead
;
197 GCC_ULONG64 KiBugcheckData
;
198 GCC_ULONG64 IopErrorLogListHead
;
199 GCC_ULONG64 ObpRootDirectoryObject
;
200 GCC_ULONG64 ObpTypeObjectType
;
201 GCC_ULONG64 MmSystemCacheStart
;
202 GCC_ULONG64 MmSystemCacheEnd
;
203 GCC_ULONG64 MmSystemCacheWs
;
204 GCC_ULONG64 MmPfnDatabase
;
205 GCC_ULONG64 MmSystemPtesStart
;
206 GCC_ULONG64 MmSystemPtesEnd
;
207 GCC_ULONG64 MmSubsectionBase
;
208 GCC_ULONG64 MmNumberOfPagingFiles
;
209 GCC_ULONG64 MmLowestPhysicalPage
;
210 GCC_ULONG64 MmHighestPhysicalPage
;
211 GCC_ULONG64 MmNumberOfPhysicalPages
;
212 GCC_ULONG64 MmMaximumNonPagedPoolInBytes
;
213 GCC_ULONG64 MmNonPagedSystemStart
;
214 GCC_ULONG64 MmNonPagedPoolStart
;
215 GCC_ULONG64 MmNonPagedPoolEnd
;
216 GCC_ULONG64 MmPagedPoolStart
;
217 GCC_ULONG64 MmPagedPoolEnd
;
218 GCC_ULONG64 MmPagedPoolInformation
;
220 GCC_ULONG64 MmSizeOfPagedPoolInBytes
;
221 GCC_ULONG64 MmTotalCommitLimit
;
222 GCC_ULONG64 MmTotalCommittedPages
;
223 GCC_ULONG64 MmSharedCommit
;
224 GCC_ULONG64 MmDriverCommit
;
225 GCC_ULONG64 MmProcessCommit
;
226 GCC_ULONG64 MmPagedPoolCommit
;
227 GCC_ULONG64 MmExtendedCommit
;
228 GCC_ULONG64 MmZeroedPageListHead
;
229 GCC_ULONG64 MmFreePageListHead
;
230 GCC_ULONG64 MmStandbyPageListHead
;
231 GCC_ULONG64 MmModifiedPageListHead
;
232 GCC_ULONG64 MmModifiedNoWritePageListHead
;
233 GCC_ULONG64 MmAvailablePages
;
234 GCC_ULONG64 MmResidentAvailablePages
;
235 GCC_ULONG64 PoolTrackTable
;
236 GCC_ULONG64 NonPagedPoolDescriptor
;
237 GCC_ULONG64 MmHighestUserAddress
;
238 GCC_ULONG64 MmSystemRangeStart
;
239 GCC_ULONG64 MmUserProbeAddress
;
240 GCC_ULONG64 KdPrintCircularBuffer
;
241 GCC_ULONG64 KdPrintCircularBufferEnd
;
242 GCC_ULONG64 KdPrintWritePointer
;
243 GCC_ULONG64 KdPrintRolloverCount
;
244 GCC_ULONG64 MmLoadedUserImageList
;
245 GCC_ULONG64 NtBuildLab
;
246 GCC_ULONG64 KiNormalSystemCall
;
247 GCC_ULONG64 KiProcessorBlock
;
248 GCC_ULONG64 MmUnloadedDrivers
;
249 GCC_ULONG64 MmLastUnloadedDriver
;
250 GCC_ULONG64 MmTriageActionTaken
;
251 GCC_ULONG64 MmSpecialPoolTag
;
252 GCC_ULONG64 KernelVerifier
;
253 GCC_ULONG64 MmVerifierData
;
254 GCC_ULONG64 MmAllocatedNonPagedPool
;
255 GCC_ULONG64 MmPeakCommitment
;
256 GCC_ULONG64 MmTotalCommitLimitMaximum
;
257 GCC_ULONG64 CmNtCSDVersion
;
258 GCC_ULONG64 MmPhysicalMemoryBlock
;
259 GCC_ULONG64 MmSessionBase
;
260 GCC_ULONG64 MmSessionSize
;
261 GCC_ULONG64 MmSystemParentTablePage
;
262 GCC_ULONG64 MmVirtualTranslationBase
;
263 USHORT OffsetKThreadNextProcessor
;
264 USHORT OffsetKThreadTeb
;
265 USHORT OffsetKThreadKernelStack
;
266 USHORT OffsetKThreadInitialStack
;
267 USHORT OffsetKThreadApcProcess
;
268 USHORT OffsetKThreadState
;
269 USHORT OffsetKThreadBStore
;
270 USHORT OffsetKThreadBStoreLimit
;
272 USHORT OffsetEprocessPeb
;
273 USHORT OffsetEprocessParentCID
;
274 USHORT OffsetEprocessDirectoryTableBase
;
276 USHORT OffsetPrcbDpcRoutine
;
277 USHORT OffsetPrcbCurrentThread
;
278 USHORT OffsetPrcbMhz
;
279 USHORT OffsetPrcbCpuType
;
280 USHORT OffsetPrcbVendorString
;
281 USHORT OffsetPrcbProcStateContext
;
282 USHORT OffsetPrcbNumber
;
284 GCC_ULONG64 KdPrintCircularBufferPtr
;
285 GCC_ULONG64 KdPrintBufferSize
;
286 GCC_ULONG64 KeLoaderBlock
;
288 USHORT OffsetPcrSelfPcr
;
289 USHORT OffsetPcrCurrentPrcb
;
290 USHORT OffsetPcrContainedPrcb
;
291 USHORT OffsetPcrInitialBStore
;
292 USHORT OffsetPcrBStoreLimit
;
293 USHORT OffsetPcrInitialStack
;
294 USHORT OffsetPcrStackLimit
;
295 USHORT OffsetPrcbPcrPage
;
296 USHORT OffsetPrcbProcStateSpecialReg
;
305 USHORT Gdt64R3CmCode
;
307 GCC_ULONG64 IopNumTriageDumpDataBlocks
;
308 GCC_ULONG64 IopTriageDumpDataBlocks
;
309 #if 0 // Longhorn/Vista and later
310 GCC_ULONG64 VfCrashDataBlock
;
311 GCC_ULONG64 MmBadPagesDetected
;
312 GCC_ULONG64 MmZeroedPageSingleBitErrorsDetected
;
314 } KDDEBUGGER_DATA64
, *PKDDEBUGGER_DATA64
;