Go to the documentation of this file.00001 #ifndef _WDBGEXTS_
00002 #define _WDBGEXTS_
00003
00004 enum
00005 {
00006 DBGKD_SIMULATION_NONE,
00007 DBGKD_SIMULATION_EXDI
00008 };
00009
00010 #define KD_SECONDARY_VERSION_DEFAULT 0
00011 #define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_1 0
00012 #define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_2 1
00013 #define KD_SECONDARY_VERSION_AMD64_CONTEXT 2
00014
00015 #if defined(_AMD64_)
00016 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_AMD64_CONTEXT
00017 #else
00018 #define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_DEFAULT
00019 #endif
00020
00021 #define DBGKD_VERS_FLAG_MP 0x0001
00022 #define DBGKD_VERS_FLAG_DATA 0x0002
00023 #define DBGKD_VERS_FLAG_PTR64 0x0004
00024 #define DBGKD_VERS_FLAG_NOMM 0x0008
00025 #define DBGKD_VERS_FLAG_HSS 0x0010
00026 #define DBGKD_VERS_FLAG_PARTITIONS 0x0020
00027
00028 #define KDBG_TAG 'GBDK'
00029
00030 typedef enum _DBGKD_MAJOR_TYPES
00031 {
00032 DBGKD_MAJOR_NT,
00033 DBGKD_MAJOR_XBOX,
00034 DBGKD_MAJOR_BIG,
00035 DBGKD_MAJOR_EXDI,
00036 DBGKD_MAJOR_NTBD,
00037 DBGKD_MAJOR_EFI,
00038 DBGKD_MAJOR_TNT,
00039 DBGKD_MAJOR_SINGULARITY,
00040 DBGKD_MAJOR_HYPERVISOR,
00041 DBGKD_MAJOR_MIDORI,
00042 DBGKD_MAJOR_COUNT
00043 } DBGKD_MAJOR_TYPES;
00044
00045
00046
00047
00048 #define DBGKD_MAJOR_TYPE(MajorVersion) \
00049 ((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
00050
00051 typedef struct _DBGKD_GET_VERSION32
00052 {
00053 USHORT MajorVersion;
00054 USHORT MinorVersion;
00055 USHORT ProtocolVersion;
00056 USHORT Flags;
00057 ULONG KernBase;
00058 ULONG PsLoadedModuleList;
00059 USHORT MachineType;
00060 USHORT ThCallbackStack;
00061 USHORT NextCallback;
00062 USHORT FramePointer;
00063 ULONG KiCallUserMode;
00064 ULONG KeUserCallbackDispatcher;
00065 ULONG BreakpointWithStatus;
00066 ULONG DebuggerDataList;
00067 } DBGKD_GET_VERSION32, *PDBGKD_GET_VERSION32;
00068
00069 typedef struct _DBGKD_DEBUG_DATA_HEADER32
00070 {
00071 LIST_ENTRY32 List;
00072 ULONG OwnerTag;
00073 ULONG Size;
00074 } DBGKD_DEBUG_DATA_HEADER32, *PDBGKD_DEBUG_DATA_HEADER32;
00075
00076 typedef struct _KDDEBUGGER_DATA32
00077 {
00078 DBGKD_DEBUG_DATA_HEADER32 Header;
00079 ULONG KernBase;
00080 ULONG BreakpointWithStatus;
00081 ULONG SavedContext;
00082 USHORT ThCallbackStack;
00083 USHORT NextCallback;
00084 USHORT FramePointer;
00085 USHORT PaeEnabled:1;
00086 ULONG KiCallUserMode;
00087 ULONG KeUserCallbackDispatcher;
00088 ULONG PsLoadedModuleList;
00089 ULONG PsActiveProcessHead;
00090 ULONG PspCidTable;
00091 ULONG ExpSystemResourcesList;
00092 ULONG ExpPagedPoolDescriptor;
00093 ULONG ExpNumberOfPagedPools;
00094 ULONG KeTimeIncrement;
00095 ULONG KeBugCheckCallbackListHead;
00096 ULONG KiBugcheckData;
00097 ULONG IopErrorLogListHead;
00098 ULONG ObpRootDirectoryObject;
00099 ULONG ObpTypeObjectType;
00100 ULONG MmSystemCacheStart;
00101 ULONG MmSystemCacheEnd;
00102 ULONG MmSystemCacheWs;
00103 ULONG MmPfnDatabase;
00104 ULONG MmSystemPtesStart;
00105 ULONG MmSystemPtesEnd;
00106 ULONG MmSubsectionBase;
00107 ULONG MmNumberOfPagingFiles;
00108 ULONG MmLowestPhysicalPage;
00109 ULONG MmHighestPhysicalPage;
00110 ULONG MmNumberOfPhysicalPages;
00111 ULONG MmMaximumNonPagedPoolInBytes;
00112 ULONG MmNonPagedSystemStart;
00113 ULONG MmNonPagedPoolStart;
00114 ULONG MmNonPagedPoolEnd;
00115 ULONG MmPagedPoolStart;
00116 ULONG MmPagedPoolEnd;
00117 ULONG MmPagedPoolInformation;
00118 ULONG MmPageSize;
00119 ULONG MmSizeOfPagedPoolInBytes;
00120 ULONG MmTotalCommitLimit;
00121 ULONG MmTotalCommittedPages;
00122 ULONG MmSharedCommit;
00123 ULONG MmDriverCommit;
00124 ULONG MmProcessCommit;
00125 ULONG MmPagedPoolCommit;
00126 ULONG MmExtendedCommit;
00127 ULONG MmZeroedPageListHead;
00128 ULONG MmFreePageListHead;
00129 ULONG MmStandbyPageListHead;
00130 ULONG MmModifiedPageListHead;
00131 ULONG MmModifiedNoWritePageListHead;
00132 ULONG MmAvailablePages;
00133 ULONG MmResidentAvailablePages;
00134 ULONG PoolTrackTable;
00135 ULONG NonPagedPoolDescriptor;
00136 ULONG MmHighestUserAddress;
00137 ULONG MmSystemRangeStart;
00138 ULONG MmUserProbeAddress;
00139 ULONG KdPrintCircularBuffer;
00140 ULONG KdPrintCircularBufferEnd;
00141 ULONG KdPrintWritePointer;
00142 ULONG KdPrintRolloverCount;
00143 ULONG MmLoadedUserImageList;
00144 } KDDEBUGGER_DATA32, *PKDDEBUGGER_DATA32;
00145
00146 typedef struct _DBGKD_GET_VERSION64
00147 {
00148 USHORT MajorVersion;
00149 USHORT MinorVersion;
00150 UCHAR ProtocolVersion;
00151 UCHAR KdSecondaryVersion;
00152 USHORT Flags;
00153 USHORT MachineType;
00154 UCHAR MaxPacketType;
00155 UCHAR MaxStateChange;
00156 UCHAR MaxManipulate;
00157 UCHAR Simulation;
00158 USHORT Unused[1];
00159 ULONG64 KernBase;
00160 ULONG64 PsLoadedModuleList;
00161 ULONG64 DebuggerDataList;
00162 } DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64;
00163
00164 typedef struct _DBGKD_DEBUG_DATA_HEADER64
00165 {
00166 LIST_ENTRY64 List;
00167 ULONG OwnerTag;
00168 ULONG Size;
00169 } DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64;
00170
00171 typedef union _GCC_ULONG64
00172 {
00173 ULONG_PTR Pointer;
00174 ULONG64 RealPointer;
00175 } GCC_ULONG64, *PGCC_ULONG64;
00176
00177 typedef struct _KDDEBUGGER_DATA64
00178 {
00179 DBGKD_DEBUG_DATA_HEADER64 Header;
00180 ULONG64 KernBase;
00181 GCC_ULONG64 BreakpointWithStatus;
00182 ULONG64 SavedContext;
00183 USHORT ThCallbackStack;
00184 USHORT NextCallback;
00185 USHORT FramePointer;
00186 USHORT PaeEnabled:1;
00187 GCC_ULONG64 KiCallUserMode;
00188 ULONG64 KeUserCallbackDispatcher;
00189 GCC_ULONG64 PsLoadedModuleList;
00190 GCC_ULONG64 PsActiveProcessHead;
00191 GCC_ULONG64 PspCidTable;
00192 GCC_ULONG64 ExpSystemResourcesList;
00193 GCC_ULONG64 ExpPagedPoolDescriptor;
00194 GCC_ULONG64 ExpNumberOfPagedPools;
00195 GCC_ULONG64 KeTimeIncrement;
00196 GCC_ULONG64 KeBugCheckCallbackListHead;
00197 GCC_ULONG64 KiBugcheckData;
00198 GCC_ULONG64 IopErrorLogListHead;
00199 GCC_ULONG64 ObpRootDirectoryObject;
00200 GCC_ULONG64 ObpTypeObjectType;
00201 GCC_ULONG64 MmSystemCacheStart;
00202 GCC_ULONG64 MmSystemCacheEnd;
00203 GCC_ULONG64 MmSystemCacheWs;
00204 GCC_ULONG64 MmPfnDatabase;
00205 GCC_ULONG64 MmSystemPtesStart;
00206 GCC_ULONG64 MmSystemPtesEnd;
00207 GCC_ULONG64 MmSubsectionBase;
00208 GCC_ULONG64 MmNumberOfPagingFiles;
00209 GCC_ULONG64 MmLowestPhysicalPage;
00210 GCC_ULONG64 MmHighestPhysicalPage;
00211 GCC_ULONG64 MmNumberOfPhysicalPages;
00212 GCC_ULONG64 MmMaximumNonPagedPoolInBytes;
00213 GCC_ULONG64 MmNonPagedSystemStart;
00214 GCC_ULONG64 MmNonPagedPoolStart;
00215 GCC_ULONG64 MmNonPagedPoolEnd;
00216 GCC_ULONG64 MmPagedPoolStart;
00217 GCC_ULONG64 MmPagedPoolEnd;
00218 GCC_ULONG64 MmPagedPoolInformation;
00219 ULONG64 MmPageSize;
00220 GCC_ULONG64 MmSizeOfPagedPoolInBytes;
00221 GCC_ULONG64 MmTotalCommitLimit;
00222 GCC_ULONG64 MmTotalCommittedPages;
00223 GCC_ULONG64 MmSharedCommit;
00224 GCC_ULONG64 MmDriverCommit;
00225 GCC_ULONG64 MmProcessCommit;
00226 GCC_ULONG64 MmPagedPoolCommit;
00227 GCC_ULONG64 MmExtendedCommit;
00228 GCC_ULONG64 MmZeroedPageListHead;
00229 GCC_ULONG64 MmFreePageListHead;
00230 GCC_ULONG64 MmStandbyPageListHead;
00231 GCC_ULONG64 MmModifiedPageListHead;
00232 GCC_ULONG64 MmModifiedNoWritePageListHead;
00233 GCC_ULONG64 MmAvailablePages;
00234 GCC_ULONG64 MmResidentAvailablePages;
00235 GCC_ULONG64 PoolTrackTable;
00236 GCC_ULONG64 NonPagedPoolDescriptor;
00237 GCC_ULONG64 MmHighestUserAddress;
00238 GCC_ULONG64 MmSystemRangeStart;
00239 GCC_ULONG64 MmUserProbeAddress;
00240 GCC_ULONG64 KdPrintCircularBuffer;
00241 GCC_ULONG64 KdPrintCircularBufferEnd;
00242 GCC_ULONG64 KdPrintWritePointer;
00243 GCC_ULONG64 KdPrintRolloverCount;
00244 GCC_ULONG64 MmLoadedUserImageList;
00245 GCC_ULONG64 NtBuildLab;
00246 GCC_ULONG64 KiNormalSystemCall;
00247 GCC_ULONG64 KiProcessorBlock;
00248 GCC_ULONG64 MmUnloadedDrivers;
00249 GCC_ULONG64 MmLastUnloadedDriver;
00250 GCC_ULONG64 MmTriageActionTaken;
00251 GCC_ULONG64 MmSpecialPoolTag;
00252 GCC_ULONG64 KernelVerifier;
00253 GCC_ULONG64 MmVerifierData;
00254 GCC_ULONG64 MmAllocatedNonPagedPool;
00255 GCC_ULONG64 MmPeakCommitment;
00256 GCC_ULONG64 MmTotalCommitLimitMaximum;
00257 GCC_ULONG64 CmNtCSDVersion;
00258 GCC_ULONG64 MmPhysicalMemoryBlock;
00259 GCC_ULONG64 MmSessionBase;
00260 GCC_ULONG64 MmSessionSize;
00261 GCC_ULONG64 MmSystemParentTablePage;
00262 GCC_ULONG64 MmVirtualTranslationBase;
00263 USHORT OffsetKThreadNextProcessor;
00264 USHORT OffsetKThreadTeb;
00265 USHORT OffsetKThreadKernelStack;
00266 USHORT OffsetKThreadInitialStack;
00267 USHORT OffsetKThreadApcProcess;
00268 USHORT OffsetKThreadState;
00269 USHORT OffsetKThreadBStore;
00270 USHORT OffsetKThreadBStoreLimit;
00271 USHORT SizeEProcess;
00272 USHORT OffsetEprocessPeb;
00273 USHORT OffsetEprocessParentCID;
00274 USHORT OffsetEprocessDirectoryTableBase;
00275 USHORT SizePrcb;
00276 USHORT OffsetPrcbDpcRoutine;
00277 USHORT OffsetPrcbCurrentThread;
00278 USHORT OffsetPrcbMhz;
00279 USHORT OffsetPrcbCpuType;
00280 USHORT OffsetPrcbVendorString;
00281 USHORT OffsetPrcbProcStateContext;
00282 USHORT OffsetPrcbNumber;
00283 USHORT SizeEThread;
00284 GCC_ULONG64 KdPrintCircularBufferPtr;
00285 GCC_ULONG64 KdPrintBufferSize;
00286 GCC_ULONG64 KeLoaderBlock;
00287 USHORT SizePcr;
00288 USHORT OffsetPcrSelfPcr;
00289 USHORT OffsetPcrCurrentPrcb;
00290 USHORT OffsetPcrContainedPrcb;
00291 USHORT OffsetPcrInitialBStore;
00292 USHORT OffsetPcrBStoreLimit;
00293 USHORT OffsetPcrInitialStack;
00294 USHORT OffsetPcrStackLimit;
00295 USHORT OffsetPrcbPcrPage;
00296 USHORT OffsetPrcbProcStateSpecialReg;
00297 USHORT GdtR0Code;
00298 USHORT GdtR0Data;
00299 USHORT GdtR0Pcr;
00300 USHORT GdtR3Code;
00301 USHORT GdtR3Data;
00302 USHORT GdtR3Teb;
00303 USHORT GdtLdt;
00304 USHORT GdtTss;
00305 USHORT Gdt64R3CmCode;
00306 USHORT Gdt64R3CmTeb;
00307 GCC_ULONG64 IopNumTriageDumpDataBlocks;
00308 GCC_ULONG64 IopTriageDumpDataBlocks;
00309 #if 0 // Longhorn/Vista and later
00310 GCC_ULONG64 VfCrashDataBlock;
00311 GCC_ULONG64 MmBadPagesDetected;
00312 GCC_ULONG64 MmZeroedPageSingleBitErrorsDetected;
00313 #endif
00314 } KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64;
00315
00316 #endif