/* * 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 */