forked from mirror/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
5.5 KiB
C
199 lines
5.5 KiB
C
/*
|
|
* Copyright (c) 2018 Virtuozzo International GmbH
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
*
|
|
*/
|
|
|
|
#ifndef KDBG_H
|
|
#define KDBG_H
|
|
|
|
typedef struct DBGKD_GET_VERSION64 {
|
|
uint16_t MajorVersion;
|
|
uint16_t MinorVersion;
|
|
uint8_t ProtocolVersion;
|
|
uint8_t KdSecondaryVersion;
|
|
uint16_t Flags;
|
|
uint16_t MachineType;
|
|
uint8_t MaxPacketType;
|
|
uint8_t MaxStateChange;
|
|
uint8_t MaxManipulate;
|
|
uint8_t Simulation;
|
|
uint16_t Unused[1];
|
|
uint64_t KernBase;
|
|
uint64_t PsLoadedModuleList;
|
|
uint64_t DebuggerDataList;
|
|
} DBGKD_GET_VERSION64;
|
|
|
|
#ifndef _WIN32
|
|
typedef struct LIST_ENTRY64 {
|
|
struct LIST_ENTRY64 *Flink;
|
|
struct LIST_ENTRY64 *Blink;
|
|
} LIST_ENTRY64;
|
|
#endif
|
|
|
|
typedef struct DBGKD_DEBUG_DATA_HEADER64 {
|
|
LIST_ENTRY64 List;
|
|
uint32_t OwnerTag;
|
|
uint32_t Size;
|
|
} DBGKD_DEBUG_DATA_HEADER64;
|
|
|
|
typedef struct KDDEBUGGER_DATA64 {
|
|
DBGKD_DEBUG_DATA_HEADER64 Header;
|
|
|
|
uint64_t KernBase;
|
|
uint64_t BreakpointWithStatus;
|
|
uint64_t SavedContext;
|
|
uint16_t ThCallbackStack;
|
|
uint16_t NextCallback;
|
|
uint16_t FramePointer;
|
|
uint16_t PaeEnabled:1;
|
|
uint64_t KiCallUserMode;
|
|
uint64_t KeUserCallbackDispatcher;
|
|
uint64_t PsLoadedModuleList;
|
|
uint64_t PsActiveProcessHead;
|
|
uint64_t PspCidTable;
|
|
uint64_t ExpSystemResourcesList;
|
|
uint64_t ExpPagedPoolDescriptor;
|
|
uint64_t ExpNumberOfPagedPools;
|
|
uint64_t KeTimeIncrement;
|
|
uint64_t KeBugCheckCallbackListHead;
|
|
uint64_t KiBugcheckData;
|
|
uint64_t IopErrorLogListHead;
|
|
uint64_t ObpRootDirectoryObject;
|
|
uint64_t ObpTypeObjectType;
|
|
uint64_t MmSystemCacheStart;
|
|
uint64_t MmSystemCacheEnd;
|
|
uint64_t MmSystemCacheWs;
|
|
uint64_t MmPfnDatabase;
|
|
uint64_t MmSystemPtesStart;
|
|
uint64_t MmSystemPtesEnd;
|
|
uint64_t MmSubsectionBase;
|
|
uint64_t MmNumberOfPagingFiles;
|
|
uint64_t MmLowestPhysicalPage;
|
|
uint64_t MmHighestPhysicalPage;
|
|
uint64_t MmNumberOfPhysicalPages;
|
|
uint64_t MmMaximumNonPagedPoolInBytes;
|
|
uint64_t MmNonPagedSystemStart;
|
|
uint64_t MmNonPagedPoolStart;
|
|
uint64_t MmNonPagedPoolEnd;
|
|
uint64_t MmPagedPoolStart;
|
|
uint64_t MmPagedPoolEnd;
|
|
uint64_t MmPagedPoolInformation;
|
|
uint64_t MmPageSize;
|
|
uint64_t MmSizeOfPagedPoolInBytes;
|
|
uint64_t MmTotalCommitLimit;
|
|
uint64_t MmTotalCommittedPages;
|
|
uint64_t MmSharedCommit;
|
|
uint64_t MmDriverCommit;
|
|
uint64_t MmProcessCommit;
|
|
uint64_t MmPagedPoolCommit;
|
|
uint64_t MmExtendedCommit;
|
|
uint64_t MmZeroedPageListHead;
|
|
uint64_t MmFreePageListHead;
|
|
uint64_t MmStandbyPageListHead;
|
|
uint64_t MmModifiedPageListHead;
|
|
uint64_t MmModifiedNoWritePageListHead;
|
|
uint64_t MmAvailablePages;
|
|
uint64_t MmResidentAvailablePages;
|
|
uint64_t PoolTrackTable;
|
|
uint64_t NonPagedPoolDescriptor;
|
|
uint64_t MmHighestUserAddress;
|
|
uint64_t MmSystemRangeStart;
|
|
uint64_t MmUserProbeAddress;
|
|
uint64_t KdPrintCircularBuffer;
|
|
uint64_t KdPrintCircularBufferEnd;
|
|
uint64_t KdPrintWritePointer;
|
|
uint64_t KdPrintRolloverCount;
|
|
uint64_t MmLoadedUserImageList;
|
|
|
|
/* NT 5.1 Addition */
|
|
|
|
uint64_t NtBuildLab;
|
|
uint64_t KiNormalSystemCall;
|
|
|
|
/* NT 5.0 hotfix addition */
|
|
|
|
uint64_t KiProcessorBlock;
|
|
uint64_t MmUnloadedDrivers;
|
|
uint64_t MmLastUnloadedDriver;
|
|
uint64_t MmTriageActionTaken;
|
|
uint64_t MmSpecialPoolTag;
|
|
uint64_t KernelVerifier;
|
|
uint64_t MmVerifierData;
|
|
uint64_t MmAllocatedNonPagedPool;
|
|
uint64_t MmPeakCommitment;
|
|
uint64_t MmTotalCommitLimitMaximum;
|
|
uint64_t CmNtCSDVersion;
|
|
|
|
/* NT 5.1 Addition */
|
|
|
|
uint64_t MmPhysicalMemoryBlock;
|
|
uint64_t MmSessionBase;
|
|
uint64_t MmSessionSize;
|
|
uint64_t MmSystemParentTablePage;
|
|
|
|
/* Server 2003 addition */
|
|
|
|
uint64_t MmVirtualTranslationBase;
|
|
uint16_t OffsetKThreadNextProcessor;
|
|
uint16_t OffsetKThreadTeb;
|
|
uint16_t OffsetKThreadKernelStack;
|
|
uint16_t OffsetKThreadInitialStack;
|
|
uint16_t OffsetKThreadApcProcess;
|
|
uint16_t OffsetKThreadState;
|
|
uint16_t OffsetKThreadBStore;
|
|
uint16_t OffsetKThreadBStoreLimit;
|
|
uint16_t SizeEProcess;
|
|
uint16_t OffsetEprocessPeb;
|
|
uint16_t OffsetEprocessParentCID;
|
|
uint16_t OffsetEprocessDirectoryTableBase;
|
|
uint16_t SizePrcb;
|
|
uint16_t OffsetPrcbDpcRoutine;
|
|
uint16_t OffsetPrcbCurrentThread;
|
|
uint16_t OffsetPrcbMhz;
|
|
uint16_t OffsetPrcbCpuType;
|
|
uint16_t OffsetPrcbVendorString;
|
|
uint16_t OffsetPrcbProcStateContext;
|
|
uint16_t OffsetPrcbNumber;
|
|
uint16_t SizeEThread;
|
|
uint64_t KdPrintCircularBufferPtr;
|
|
uint64_t KdPrintBufferSize;
|
|
uint64_t KeLoaderBlock;
|
|
uint16_t SizePcr;
|
|
uint16_t OffsetPcrSelfPcr;
|
|
uint16_t OffsetPcrCurrentPrcb;
|
|
uint16_t OffsetPcrContainedPrcb;
|
|
uint16_t OffsetPcrInitialBStore;
|
|
uint16_t OffsetPcrBStoreLimit;
|
|
uint16_t OffsetPcrInitialStack;
|
|
uint16_t OffsetPcrStackLimit;
|
|
uint16_t OffsetPrcbPcrPage;
|
|
uint16_t OffsetPrcbProcStateSpecialReg;
|
|
uint16_t GdtR0Code;
|
|
uint16_t GdtR0Data;
|
|
uint16_t GdtR0Pcr;
|
|
uint16_t GdtR3Code;
|
|
uint16_t GdtR3Data;
|
|
uint16_t GdtR3Teb;
|
|
uint16_t GdtLdt;
|
|
uint16_t GdtTss;
|
|
uint16_t Gdt64R3CmCode;
|
|
uint16_t Gdt64R3CmTeb;
|
|
uint64_t IopNumTriageDumpDataBlocks;
|
|
uint64_t IopTriageDumpDataBlocks;
|
|
|
|
/* Longhorn addition */
|
|
|
|
uint64_t VfCrashDataBlock;
|
|
uint64_t MmBadPagesDetected;
|
|
uint64_t MmZeroedPageSingleBitErrorsDetected;
|
|
|
|
/* Windows 7 addition */
|
|
|
|
uint64_t EtwpDebuggerData;
|
|
uint16_t OffsetPrcbContext;
|
|
} KDDEBUGGER_DATA64;
|
|
|
|
#endif /* KDBG_H */
|