mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
f7024d6c72
Addendum to commit de81021ba
.
Otherwise, we get the following build error:
\ntoskrnl\kd64\kddata.c(532,5): error: initializer element is not a compile-time constant
PtrToUL64(RtlpBreakWithStatusInstruction),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\ntoskrnl\kd64\kddata.c(526,26): note: expanded from macro 'PtrToUL64'
#define PtrToUL64(x) ((ULPTR64)(x))
^~~~~~~~~~~~
383 lines
10 KiB
C
383 lines
10 KiB
C
#ifndef _WDBGEXTS_
|
|
#define _WDBGEXTS_
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
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
|
|
|
|
#if defined(_AMD64_)
|
|
#define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_AMD64_CONTEXT
|
|
#else
|
|
#define CURRENT_KD_SECONDARY_VERSION KD_SECONDARY_VERSION_DEFAULT
|
|
#endif
|
|
|
|
#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
|
|
|
|
#define KDBG_TAG 'GBDK'
|
|
|
|
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,
|
|
DBGKD_MAJOR_MIDORI,
|
|
DBGKD_MAJOR_COUNT
|
|
} DBGKD_MAJOR_TYPES;
|
|
|
|
//
|
|
// The major type is in the high byte
|
|
//
|
|
#define DBGKD_MAJOR_TYPE(MajorVersion) \
|
|
((DBGKD_MAJOR_TYPES)((MajorVersion) >> 8))
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
/* Self-documenting type: stores a pointer as a 64-bit quantity */
|
|
#if !defined(_WIN64) && (defined(__GNUC__) || defined(__clang__))
|
|
/* Minimal hackery for GCC/Clang, see commit b9cd3f2d9 (r25845) and de81021ba */
|
|
typedef union _ULPTR64
|
|
{
|
|
ULONG_PTR ptr;
|
|
ULONG64 ptr64;
|
|
} ULPTR64;
|
|
#else
|
|
// #define ULPTR64 PVOID64
|
|
#define ULPTR64 ULONG64
|
|
#endif
|
|
|
|
typedef struct _KDDEBUGGER_DATA64
|
|
{
|
|
DBGKD_DEBUG_DATA_HEADER64 Header;
|
|
ULONG64 KernBase;
|
|
ULPTR64 BreakpointWithStatus;
|
|
ULONG64 SavedContext;
|
|
USHORT ThCallbackStack;
|
|
USHORT NextCallback;
|
|
USHORT FramePointer;
|
|
USHORT PaeEnabled:1;
|
|
ULPTR64 KiCallUserMode;
|
|
ULONG64 KeUserCallbackDispatcher;
|
|
ULPTR64 PsLoadedModuleList;
|
|
ULPTR64 PsActiveProcessHead;
|
|
ULPTR64 PspCidTable;
|
|
ULPTR64 ExpSystemResourcesList;
|
|
ULPTR64 ExpPagedPoolDescriptor;
|
|
ULPTR64 ExpNumberOfPagedPools;
|
|
ULPTR64 KeTimeIncrement;
|
|
ULPTR64 KeBugCheckCallbackListHead;
|
|
ULPTR64 KiBugcheckData;
|
|
ULPTR64 IopErrorLogListHead;
|
|
ULPTR64 ObpRootDirectoryObject;
|
|
ULPTR64 ObpTypeObjectType;
|
|
ULPTR64 MmSystemCacheStart;
|
|
ULPTR64 MmSystemCacheEnd;
|
|
ULPTR64 MmSystemCacheWs;
|
|
ULPTR64 MmPfnDatabase;
|
|
ULPTR64 MmSystemPtesStart;
|
|
ULPTR64 MmSystemPtesEnd;
|
|
ULPTR64 MmSubsectionBase;
|
|
ULPTR64 MmNumberOfPagingFiles;
|
|
ULPTR64 MmLowestPhysicalPage;
|
|
ULPTR64 MmHighestPhysicalPage;
|
|
ULPTR64 MmNumberOfPhysicalPages;
|
|
ULPTR64 MmMaximumNonPagedPoolInBytes;
|
|
ULPTR64 MmNonPagedSystemStart;
|
|
ULPTR64 MmNonPagedPoolStart;
|
|
ULPTR64 MmNonPagedPoolEnd;
|
|
ULPTR64 MmPagedPoolStart;
|
|
ULPTR64 MmPagedPoolEnd;
|
|
ULPTR64 MmPagedPoolInformation;
|
|
ULONG64 MmPageSize;
|
|
ULPTR64 MmSizeOfPagedPoolInBytes;
|
|
ULPTR64 MmTotalCommitLimit;
|
|
ULPTR64 MmTotalCommittedPages;
|
|
ULPTR64 MmSharedCommit;
|
|
ULPTR64 MmDriverCommit;
|
|
ULPTR64 MmProcessCommit;
|
|
ULPTR64 MmPagedPoolCommit;
|
|
ULPTR64 MmExtendedCommit;
|
|
ULPTR64 MmZeroedPageListHead;
|
|
ULPTR64 MmFreePageListHead;
|
|
ULPTR64 MmStandbyPageListHead;
|
|
ULPTR64 MmModifiedPageListHead;
|
|
ULPTR64 MmModifiedNoWritePageListHead;
|
|
ULPTR64 MmAvailablePages;
|
|
ULPTR64 MmResidentAvailablePages;
|
|
ULPTR64 PoolTrackTable;
|
|
ULPTR64 NonPagedPoolDescriptor;
|
|
ULPTR64 MmHighestUserAddress;
|
|
ULPTR64 MmSystemRangeStart;
|
|
ULPTR64 MmUserProbeAddress;
|
|
ULPTR64 KdPrintCircularBuffer;
|
|
ULPTR64 KdPrintCircularBufferEnd;
|
|
ULPTR64 KdPrintWritePointer;
|
|
ULPTR64 KdPrintRolloverCount;
|
|
ULPTR64 MmLoadedUserImageList;
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
|
ULPTR64 NtBuildLab;
|
|
ULPTR64 KiNormalSystemCall;
|
|
#endif
|
|
|
|
/* NOTE: Documented as "NT 5.0 hotfix (QFE) addition" */
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2KSP4)
|
|
ULPTR64 KiProcessorBlock;
|
|
ULPTR64 MmUnloadedDrivers;
|
|
ULPTR64 MmLastUnloadedDriver;
|
|
ULPTR64 MmTriageActionTaken;
|
|
ULPTR64 MmSpecialPoolTag;
|
|
ULPTR64 KernelVerifier;
|
|
ULPTR64 MmVerifierData;
|
|
ULPTR64 MmAllocatedNonPagedPool;
|
|
ULPTR64 MmPeakCommitment;
|
|
ULPTR64 MmTotalCommitLimitMaximum;
|
|
ULPTR64 CmNtCSDVersion;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
|
ULPTR64 MmPhysicalMemoryBlock;
|
|
ULPTR64 MmSessionBase;
|
|
ULPTR64 MmSessionSize;
|
|
ULPTR64 MmSystemParentTablePage;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WS03)
|
|
ULPTR64 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;
|
|
ULPTR64 KdPrintCircularBufferPtr;
|
|
ULPTR64 KdPrintBufferSize;
|
|
ULPTR64 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;
|
|
ULPTR64 IopNumTriageDumpDataBlocks;
|
|
ULPTR64 IopTriageDumpDataBlocks;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
|
ULPTR64 VfCrashDataBlock;
|
|
ULPTR64 MmBadPagesDetected;
|
|
ULPTR64 MmZeroedPageSingleBitErrorsDetected;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
|
ULPTR64 EtwpDebuggerData;
|
|
USHORT OffsetPrcbContext;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN8)
|
|
USHORT OffsetPrcbMaxBreakpoints;
|
|
USHORT OffsetPrcbMaxWatchpoints;
|
|
ULONG OffsetKThreadStackLimit;
|
|
ULONG OffsetKThreadStackBase;
|
|
ULONG OffsetKThreadQueueListEntry;
|
|
ULONG OffsetEThreadIrpList;
|
|
USHORT OffsetPrcbIdleThread;
|
|
USHORT OffsetPrcbNormalDpcState;
|
|
USHORT OffsetPrcbDpcStack;
|
|
USHORT OffsetPrcbIsrStack;
|
|
USHORT SizeKDPC_STACK_FRAME;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WINBLUE) // NTDDI_WIN81
|
|
USHORT OffsetKPriQueueThreadListHead;
|
|
USHORT OffsetKThreadWaitReason;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
|
|
USHORT Padding;
|
|
ULPTR64 PteBase;
|
|
#endif
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN10_RS5)
|
|
ULPTR64 RetpolineStubFunctionTable;
|
|
ULONG RetpolineStubFunctionTableSize;
|
|
ULONG RetpolineStubOffset;
|
|
ULONG RetpolineStubSize;
|
|
#endif
|
|
} KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _WDBGEXTS_
|