2007-09-17 13:43:34 +00:00
|
|
|
#ifndef _WDBGEXTS_
|
|
|
|
#define _WDBGEXTS_
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
DBGKD_SIMULATION_NONE,
|
|
|
|
DBGKD_SIMULATION_EXDI
|
|
|
|
};
|
|
|
|
|
|
|
|
#define KD_SECONDARY_VERSION_DEFAULT 0
|
|
|
|
#define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_1 0
|
|
|
|
#define KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_2 1
|
|
|
|
#define KD_SECONDARY_VERSION_AMD64_CONTEXT 2
|
2009-10-04 16:53:15 +00:00
|
|
|
|
|
|
|
#if defined(_AMD64_)
|
|
|
|
#define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_AMD64_CONTEXT
|
|
|
|
#else
|
2007-09-17 13:43:34 +00:00
|
|
|
#define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_DEFAULT
|
2009-10-04 16:53:15 +00:00
|
|
|
#endif
|
2007-09-17 13:43:34 +00:00
|
|
|
|
|
|
|
#define DBGKD_VERS_FLAG_MP 0x0001
|
|
|
|
#define DBGKD_VERS_FLAG_DATA 0x0002
|
|
|
|
#define DBGKD_VERS_FLAG_PTR64 0x0004
|
|
|
|
#define DBGKD_VERS_FLAG_NOMM 0x0008
|
|
|
|
#define DBGKD_VERS_FLAG_HSS 0x0010
|
|
|
|
#define DBGKD_VERS_FLAG_PARTITIONS 0x0020
|
|
|
|
|
2009-08-24 17:12:25 +00:00
|
|
|
#define KDBG_TAG 'GBDK'
|
2007-09-17 13:43:34 +00:00
|
|
|
|
2009-11-02 17:45:51 +00:00
|
|
|
typedef enum _DBGKD_MAJOR_TYPES
|
|
|
|
{
|
|
|
|
DBGKD_MAJOR_NT,
|
|
|
|
DBGKD_MAJOR_XBOX,
|
|
|
|
DBGKD_MAJOR_BIG,
|
|
|
|
DBGKD_MAJOR_EXDI,
|
|
|
|
DBGKD_MAJOR_NTBD,
|
|
|
|
DBGKD_MAJOR_EFI,
|
|
|
|
DBGKD_MAJOR_TNT,
|
|
|
|
DBGKD_MAJOR_SINGULARITY,
|
|
|
|
DBGKD_MAJOR_HYPERVISOR,
|
2012-03-05 13:02:21 +00:00
|
|
|
DBGKD_MAJOR_MIDORI,
|
2009-11-02 17:45:51 +00:00
|
|
|
DBGKD_MAJOR_COUNT
|
|
|
|
} DBGKD_MAJOR_TYPES;
|
|
|
|
|
|
|
|
//
|
|
|
|
// The major type is in the high byte
|
|
|
|
//
|
|
|
|
#define DBGKD_MAJOR_TYPE(MajorVersion) \
|
|
|
|
((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
|
|
|
|
|
2009-01-19 23:34:27 +00:00
|
|
|
typedef struct _DBGKD_GET_VERSION32
|
|
|
|
{
|
|
|
|
USHORT MajorVersion;
|
|
|
|
USHORT MinorVersion;
|
|
|
|
USHORT ProtocolVersion;
|
|
|
|
USHORT Flags;
|
|
|
|
ULONG KernBase;
|
|
|
|
ULONG PsLoadedModuleList;
|
|
|
|
USHORT MachineType;
|
|
|
|
USHORT ThCallbackStack;
|
|
|
|
USHORT NextCallback;
|
|
|
|
USHORT FramePointer;
|
|
|
|
ULONG KiCallUserMode;
|
|
|
|
ULONG KeUserCallbackDispatcher;
|
|
|
|
ULONG BreakpointWithStatus;
|
|
|
|
ULONG DebuggerDataList;
|
|
|
|
} DBGKD_GET_VERSION32, *PDBGKD_GET_VERSION32;
|
|
|
|
|
|
|
|
typedef struct _DBGKD_DEBUG_DATA_HEADER32
|
|
|
|
{
|
|
|
|
LIST_ENTRY32 List;
|
|
|
|
ULONG OwnerTag;
|
|
|
|
ULONG Size;
|
|
|
|
} DBGKD_DEBUG_DATA_HEADER32, *PDBGKD_DEBUG_DATA_HEADER32;
|
|
|
|
|
|
|
|
typedef struct _KDDEBUGGER_DATA32
|
|
|
|
{
|
|
|
|
DBGKD_DEBUG_DATA_HEADER32 Header;
|
|
|
|
ULONG KernBase;
|
|
|
|
ULONG BreakpointWithStatus;
|
|
|
|
ULONG SavedContext;
|
|
|
|
USHORT ThCallbackStack;
|
|
|
|
USHORT NextCallback;
|
|
|
|
USHORT FramePointer;
|
|
|
|
USHORT PaeEnabled:1;
|
|
|
|
ULONG KiCallUserMode;
|
|
|
|
ULONG KeUserCallbackDispatcher;
|
|
|
|
ULONG PsLoadedModuleList;
|
|
|
|
ULONG PsActiveProcessHead;
|
|
|
|
ULONG PspCidTable;
|
|
|
|
ULONG ExpSystemResourcesList;
|
|
|
|
ULONG ExpPagedPoolDescriptor;
|
|
|
|
ULONG ExpNumberOfPagedPools;
|
|
|
|
ULONG KeTimeIncrement;
|
|
|
|
ULONG KeBugCheckCallbackListHead;
|
|
|
|
ULONG KiBugcheckData;
|
|
|
|
ULONG IopErrorLogListHead;
|
|
|
|
ULONG ObpRootDirectoryObject;
|
|
|
|
ULONG ObpTypeObjectType;
|
|
|
|
ULONG MmSystemCacheStart;
|
|
|
|
ULONG MmSystemCacheEnd;
|
|
|
|
ULONG MmSystemCacheWs;
|
|
|
|
ULONG MmPfnDatabase;
|
|
|
|
ULONG MmSystemPtesStart;
|
|
|
|
ULONG MmSystemPtesEnd;
|
|
|
|
ULONG MmSubsectionBase;
|
|
|
|
ULONG MmNumberOfPagingFiles;
|
|
|
|
ULONG MmLowestPhysicalPage;
|
|
|
|
ULONG MmHighestPhysicalPage;
|
|
|
|
ULONG MmNumberOfPhysicalPages;
|
|
|
|
ULONG MmMaximumNonPagedPoolInBytes;
|
|
|
|
ULONG MmNonPagedSystemStart;
|
|
|
|
ULONG MmNonPagedPoolStart;
|
|
|
|
ULONG MmNonPagedPoolEnd;
|
|
|
|
ULONG MmPagedPoolStart;
|
|
|
|
ULONG MmPagedPoolEnd;
|
|
|
|
ULONG MmPagedPoolInformation;
|
|
|
|
ULONG MmPageSize;
|
|
|
|
ULONG MmSizeOfPagedPoolInBytes;
|
|
|
|
ULONG MmTotalCommitLimit;
|
|
|
|
ULONG MmTotalCommittedPages;
|
|
|
|
ULONG MmSharedCommit;
|
|
|
|
ULONG MmDriverCommit;
|
|
|
|
ULONG MmProcessCommit;
|
|
|
|
ULONG MmPagedPoolCommit;
|
|
|
|
ULONG MmExtendedCommit;
|
|
|
|
ULONG MmZeroedPageListHead;
|
|
|
|
ULONG MmFreePageListHead;
|
|
|
|
ULONG MmStandbyPageListHead;
|
|
|
|
ULONG MmModifiedPageListHead;
|
|
|
|
ULONG MmModifiedNoWritePageListHead;
|
|
|
|
ULONG MmAvailablePages;
|
|
|
|
ULONG MmResidentAvailablePages;
|
|
|
|
ULONG PoolTrackTable;
|
|
|
|
ULONG NonPagedPoolDescriptor;
|
|
|
|
ULONG MmHighestUserAddress;
|
|
|
|
ULONG MmSystemRangeStart;
|
|
|
|
ULONG MmUserProbeAddress;
|
|
|
|
ULONG KdPrintCircularBuffer;
|
|
|
|
ULONG KdPrintCircularBufferEnd;
|
|
|
|
ULONG KdPrintWritePointer;
|
|
|
|
ULONG KdPrintRolloverCount;
|
|
|
|
ULONG MmLoadedUserImageList;
|
|
|
|
} KDDEBUGGER_DATA32, *PKDDEBUGGER_DATA32;
|
|
|
|
|
2007-09-17 13:43:34 +00:00
|
|
|
typedef struct _DBGKD_GET_VERSION64
|
|
|
|
{
|
|
|
|
USHORT MajorVersion;
|
|
|
|
USHORT MinorVersion;
|
|
|
|
UCHAR ProtocolVersion;
|
|
|
|
UCHAR KdSecondaryVersion;
|
|
|
|
USHORT Flags;
|
|
|
|
USHORT MachineType;
|
|
|
|
UCHAR MaxPacketType;
|
|
|
|
UCHAR MaxStateChange;
|
|
|
|
UCHAR MaxManipulate;
|
|
|
|
UCHAR Simulation;
|
|
|
|
USHORT Unused[1];
|
|
|
|
ULONG64 KernBase;
|
|
|
|
ULONG64 PsLoadedModuleList;
|
|
|
|
ULONG64 DebuggerDataList;
|
|
|
|
} DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64;
|
|
|
|
|
|
|
|
typedef struct _DBGKD_DEBUG_DATA_HEADER64
|
|
|
|
{
|
|
|
|
LIST_ENTRY64 List;
|
|
|
|
ULONG OwnerTag;
|
|
|
|
ULONG Size;
|
|
|
|
} DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64;
|
|
|
|
|
|
|
|
typedef union _GCC_ULONG64
|
|
|
|
{
|
|
|
|
ULONG_PTR Pointer;
|
|
|
|
ULONG64 RealPointer;
|
|
|
|
} GCC_ULONG64, *PGCC_ULONG64;
|
|
|
|
|
|
|
|
typedef struct _KDDEBUGGER_DATA64
|
|
|
|
{
|
|
|
|
DBGKD_DEBUG_DATA_HEADER64 Header;
|
|
|
|
ULONG64 KernBase;
|
|
|
|
GCC_ULONG64 BreakpointWithStatus;
|
|
|
|
ULONG64 SavedContext;
|
|
|
|
USHORT ThCallbackStack;
|
|
|
|
USHORT NextCallback;
|
|
|
|
USHORT FramePointer;
|
|
|
|
USHORT PaeEnabled:1;
|
|
|
|
GCC_ULONG64 KiCallUserMode;
|
2009-10-04 16:53:15 +00:00
|
|
|
ULONG64 KeUserCallbackDispatcher;
|
2007-09-17 13:43:34 +00:00
|
|
|
GCC_ULONG64 PsLoadedModuleList;
|
|
|
|
GCC_ULONG64 PsActiveProcessHead;
|
|
|
|
GCC_ULONG64 PspCidTable;
|
|
|
|
GCC_ULONG64 ExpSystemResourcesList;
|
|
|
|
GCC_ULONG64 ExpPagedPoolDescriptor;
|
|
|
|
GCC_ULONG64 ExpNumberOfPagedPools;
|
|
|
|
GCC_ULONG64 KeTimeIncrement;
|
|
|
|
GCC_ULONG64 KeBugCheckCallbackListHead;
|
|
|
|
GCC_ULONG64 KiBugcheckData;
|
|
|
|
GCC_ULONG64 IopErrorLogListHead;
|
|
|
|
GCC_ULONG64 ObpRootDirectoryObject;
|
|
|
|
GCC_ULONG64 ObpTypeObjectType;
|
|
|
|
GCC_ULONG64 MmSystemCacheStart;
|
|
|
|
GCC_ULONG64 MmSystemCacheEnd;
|
|
|
|
GCC_ULONG64 MmSystemCacheWs;
|
|
|
|
GCC_ULONG64 MmPfnDatabase;
|
|
|
|
GCC_ULONG64 MmSystemPtesStart;
|
|
|
|
GCC_ULONG64 MmSystemPtesEnd;
|
|
|
|
GCC_ULONG64 MmSubsectionBase;
|
|
|
|
GCC_ULONG64 MmNumberOfPagingFiles;
|
|
|
|
GCC_ULONG64 MmLowestPhysicalPage;
|
|
|
|
GCC_ULONG64 MmHighestPhysicalPage;
|
|
|
|
GCC_ULONG64 MmNumberOfPhysicalPages;
|
|
|
|
GCC_ULONG64 MmMaximumNonPagedPoolInBytes;
|
|
|
|
GCC_ULONG64 MmNonPagedSystemStart;
|
|
|
|
GCC_ULONG64 MmNonPagedPoolStart;
|
|
|
|
GCC_ULONG64 MmNonPagedPoolEnd;
|
|
|
|
GCC_ULONG64 MmPagedPoolStart;
|
|
|
|
GCC_ULONG64 MmPagedPoolEnd;
|
|
|
|
GCC_ULONG64 MmPagedPoolInformation;
|
|
|
|
ULONG64 MmPageSize;
|
|
|
|
GCC_ULONG64 MmSizeOfPagedPoolInBytes;
|
|
|
|
GCC_ULONG64 MmTotalCommitLimit;
|
|
|
|
GCC_ULONG64 MmTotalCommittedPages;
|
|
|
|
GCC_ULONG64 MmSharedCommit;
|
|
|
|
GCC_ULONG64 MmDriverCommit;
|
|
|
|
GCC_ULONG64 MmProcessCommit;
|
|
|
|
GCC_ULONG64 MmPagedPoolCommit;
|
|
|
|
GCC_ULONG64 MmExtendedCommit;
|
|
|
|
GCC_ULONG64 MmZeroedPageListHead;
|
|
|
|
GCC_ULONG64 MmFreePageListHead;
|
|
|
|
GCC_ULONG64 MmStandbyPageListHead;
|
|
|
|
GCC_ULONG64 MmModifiedPageListHead;
|
|
|
|
GCC_ULONG64 MmModifiedNoWritePageListHead;
|
|
|
|
GCC_ULONG64 MmAvailablePages;
|
|
|
|
GCC_ULONG64 MmResidentAvailablePages;
|
|
|
|
GCC_ULONG64 PoolTrackTable;
|
|
|
|
GCC_ULONG64 NonPagedPoolDescriptor;
|
|
|
|
GCC_ULONG64 MmHighestUserAddress;
|
|
|
|
GCC_ULONG64 MmSystemRangeStart;
|
|
|
|
GCC_ULONG64 MmUserProbeAddress;
|
|
|
|
GCC_ULONG64 KdPrintCircularBuffer;
|
|
|
|
GCC_ULONG64 KdPrintCircularBufferEnd;
|
|
|
|
GCC_ULONG64 KdPrintWritePointer;
|
|
|
|
GCC_ULONG64 KdPrintRolloverCount;
|
|
|
|
GCC_ULONG64 MmLoadedUserImageList;
|
|
|
|
GCC_ULONG64 NtBuildLab;
|
|
|
|
GCC_ULONG64 KiNormalSystemCall;
|
|
|
|
GCC_ULONG64 KiProcessorBlock;
|
|
|
|
GCC_ULONG64 MmUnloadedDrivers;
|
|
|
|
GCC_ULONG64 MmLastUnloadedDriver;
|
|
|
|
GCC_ULONG64 MmTriageActionTaken;
|
|
|
|
GCC_ULONG64 MmSpecialPoolTag;
|
|
|
|
GCC_ULONG64 KernelVerifier;
|
|
|
|
GCC_ULONG64 MmVerifierData;
|
|
|
|
GCC_ULONG64 MmAllocatedNonPagedPool;
|
|
|
|
GCC_ULONG64 MmPeakCommitment;
|
|
|
|
GCC_ULONG64 MmTotalCommitLimitMaximum;
|
|
|
|
GCC_ULONG64 CmNtCSDVersion;
|
|
|
|
GCC_ULONG64 MmPhysicalMemoryBlock;
|
|
|
|
GCC_ULONG64 MmSessionBase;
|
|
|
|
GCC_ULONG64 MmSessionSize;
|
|
|
|
GCC_ULONG64 MmSystemParentTablePage;
|
|
|
|
GCC_ULONG64 MmVirtualTranslationBase;
|
|
|
|
USHORT OffsetKThreadNextProcessor;
|
|
|
|
USHORT OffsetKThreadTeb;
|
|
|
|
USHORT OffsetKThreadKernelStack;
|
|
|
|
USHORT OffsetKThreadInitialStack;
|
|
|
|
USHORT OffsetKThreadApcProcess;
|
|
|
|
USHORT OffsetKThreadState;
|
|
|
|
USHORT OffsetKThreadBStore;
|
|
|
|
USHORT OffsetKThreadBStoreLimit;
|
|
|
|
USHORT SizeEProcess;
|
|
|
|
USHORT OffsetEprocessPeb;
|
|
|
|
USHORT OffsetEprocessParentCID;
|
|
|
|
USHORT OffsetEprocessDirectoryTableBase;
|
|
|
|
USHORT SizePrcb;
|
|
|
|
USHORT OffsetPrcbDpcRoutine;
|
|
|
|
USHORT OffsetPrcbCurrentThread;
|
|
|
|
USHORT OffsetPrcbMhz;
|
|
|
|
USHORT OffsetPrcbCpuType;
|
|
|
|
USHORT OffsetPrcbVendorString;
|
|
|
|
USHORT OffsetPrcbProcStateContext;
|
|
|
|
USHORT OffsetPrcbNumber;
|
|
|
|
USHORT SizeEThread;
|
|
|
|
GCC_ULONG64 KdPrintCircularBufferPtr;
|
|
|
|
GCC_ULONG64 KdPrintBufferSize;
|
|
|
|
GCC_ULONG64 KeLoaderBlock;
|
|
|
|
USHORT SizePcr;
|
|
|
|
USHORT OffsetPcrSelfPcr;
|
|
|
|
USHORT OffsetPcrCurrentPrcb;
|
|
|
|
USHORT OffsetPcrContainedPrcb;
|
|
|
|
USHORT OffsetPcrInitialBStore;
|
|
|
|
USHORT OffsetPcrBStoreLimit;
|
|
|
|
USHORT OffsetPcrInitialStack;
|
|
|
|
USHORT OffsetPcrStackLimit;
|
|
|
|
USHORT OffsetPrcbPcrPage;
|
|
|
|
USHORT OffsetPrcbProcStateSpecialReg;
|
|
|
|
USHORT GdtR0Code;
|
|
|
|
USHORT GdtR0Data;
|
|
|
|
USHORT GdtR0Pcr;
|
|
|
|
USHORT GdtR3Code;
|
|
|
|
USHORT GdtR3Data;
|
|
|
|
USHORT GdtR3Teb;
|
|
|
|
USHORT GdtLdt;
|
|
|
|
USHORT GdtTss;
|
|
|
|
USHORT Gdt64R3CmCode;
|
|
|
|
USHORT Gdt64R3CmTeb;
|
|
|
|
GCC_ULONG64 IopNumTriageDumpDataBlocks;
|
|
|
|
GCC_ULONG64 IopTriageDumpDataBlocks;
|
2009-10-31 01:02:35 +00:00
|
|
|
#if 0 // Longhorn/Vista and later
|
2007-09-17 13:43:34 +00:00
|
|
|
GCC_ULONG64 VfCrashDataBlock;
|
2009-10-31 01:02:35 +00:00
|
|
|
GCC_ULONG64 MmBadPagesDetected;
|
|
|
|
GCC_ULONG64 MmZeroedPageSingleBitErrorsDetected;
|
|
|
|
#endif
|
2007-09-17 13:43:34 +00:00
|
|
|
} KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64;
|
|
|
|
|
|
|
|
#endif
|