IDebugDataSpaces::ReadDebuggerData 方法 (dbgeng.h)

ReadDebuggerData 方法返回有关调试器引擎在当前会话期间查询或确定的目标的信息。 可用信息包括某些关键目标内核位置的位置、特定状态值以及许多其他内容。

语法

HRESULT ReadDebuggerData(
  [in]            ULONG  Index,
  [out]           PVOID  Buffer,
  [in]            ULONG  BufferSize,
  [out, optional] PULONG DataSize
);

参数

[in] Index

指定要检索的数据的索引。 以下为有效值:

Value 返回类型 说明
DEBUG_DATA_KernBase ULONG64 返回内核映像的基址。
DEBUG_DATA_BreakpointWithStatusAddr ULONG64 返回内核函数 断点WithStatusInstruction 的地址。
DEBUG_DATA_SavedContextAddr ULONG64 返回在 bug 检查期间保存的上下文记录的地址。 它仅在 bug 检查后有效。
DEBUG_DATA_KiCallUserModeAddr ULONG64 返回内核函数 KiCallUserMode 的地址。
DEBUG_DATA_KeUserCallbackDispatcherAddr ULONG64 返回内核变量 KeUserCallbackDispatcher
DEBUG_DATA_PsLoadedModuleListAddr ULONG64 返回内核变量 PsLoadedModuleList 的地址。
DEBUG_DATA_PsActiveProcessHeadAddr ULONG64 返回内核变量 PsActiveProcessHead 的地址。
DEBUG_DATA_PspCidTableAddr ULONG64 返回内核变量 PspCidTable 的地址。
DEBUG_DATA_ExpSystemResourcesListAddr ULONG64 返回内核变量 ExpSystemResourcesList 的地址。
DEBUG_DATA_ExpPagedPoolDescriptorAddr ULONG64 返回内核变量 ExpPagedPoolDescriptor 的地址。
DEBUG_DATA_ExpNumberOfPagedPoolsAddr ULONG64 返回内核变量 ExpNumberOfPagedPools 的地址。
DEBUG_DATA_KeTimeIncrementAddr ULONG64 返回内核变量 KeTimeIncrement 的地址。
DEBUG_DATA_KeBugCheckCallbackListHeadAddr ULONG64 返回内核变量 KeBugCheckCallbackListHead 的地址。
DEBUG_DATA_KiBugcheckDataAddr ULONG64 返回内核变量 KiBugCheckData
DEBUG_DATA_IopErrorLogListHeadAddr ULONG64 返回内核变量 IopErrorLogListHead 的地址。
DEBUG_DATA_ObpRootDirectoryObjectAddr ULONG64 返回内核变量 ObpRootDirectoryObject 的地址。
DEBUG_DATA_ObpTypeObjectTypeAddr ULONG64 返回内核变量 ObpTypeObjectType 的地址。
DEBUG_DATA_MmSystemCacheStartAddr ULONG64 返回内核变量 MmSystemCacheStart 的地址。
DEBUG_DATA_MmSystemCacheEndAddr ULONG64 返回内核变量 MmSystemCacheEnd 的地址。
DEBUG_DATA_MmSystemCacheWsAddr ULONG64 返回内核变量 MmSystemCacheWs 的地址。
DEBUG_DATA_MmPfnDatabaseAddr ULONG64 返回内核变量 MmPfnDatabase 的地址。
DEBUG_DATA_MmSystemPtesStartAddr ULONG64 返回内核变量 MmSystemPtesStart
DEBUG_DATA_MmSystemPtesEndAddr ULONG64 返回内核变量 MmSystemPtesEnd
DEBUG_DATA_MmSubsectionBaseAddr ULONG64 返回内核变量 MmSubsectionBase 的地址。
DEBUG_DATA_MmNumberOfPagingFilesAddr ULONG64 返回内核变量 MmNumberOfPagingFiles 的地址。
DEBUG_DATA_MmLowestPhysicalPageAddr ULONG64 返回内核变量 MmLowestPhysicalPage 的地址。
DEBUG_DATA_MmHighestPhysicalPageAddr ULONG64 返回内核变量 MmHighestPhysicalPage 的地址。
DEBUG_DATA_MmNumberOfPhysicalPagesAddr ULONG64 返回内核变量 MmNumberOfPhysicalPages 的地址。
DEBUG_DATA_MmMaximumNonPagedPoolInBytesAddr ULONG64 返回内核变量 MmMaximumNonPagedPoolInBytes 的地址。
DEBUG_DATA_MmNonPagedSystemStartAddr ULONG64 返回内核变量 MmNonPagedSystemStart 的地址。
DEBUG_DATA_MmNonPagedPoolStartAddr ULONG64 返回内核变量 MmNonPagedPoolStart 的地址。
DEBUG_DATA_MmNonPagedPoolEndAddr ULONG64 返回内核变量 MmNonPagedPoolEnd 的地址。
DEBUG_DATA_MmPagedPoolStartAddr ULONG64 返回内核变量 MmPagedPoolStart 的地址。
DEBUG_DATA_MmPagedPoolEndAddr ULONG64 返回内核变量 MmPagedPoolEnd 的地址。
DEBUG_DATA_MmPagedPoolInformationAddr ULONG64 返回内核变量 MmPagedPoolInfo 的地址。
DEBUG_DATA_MmPageSize ULONG64 返回页面大小。
DEBUG_DATA_MmSizeOfPagedPoolInBytesAddr ULONG64 返回内核变量 MmSizeOfPagedPoolInBytes 的地址。
DEBUG_DATA_MmTotalCommitLimitAddr ULONG64 返回内核变量 MmTotalCommitLimit 的地址。
DEBUG_DATA_MmTotalCommittedPagesAddr ULONG64 返回内核变量 MmTotalCommittedPages 的地址。
DEBUG_DATA_MmSharedCommitAddr ULONG64 返回内核变量 MmSharedCommit 的地址。
DEBUG_DATA_MmDriverCommitAddr ULONG64 返回内核变量 MmDriverCommit 的地址。
DEBUG_DATA_MmProcessCommitAddr ULONG64 返回内核变量 MmProcessCommit 的地址。
DEBUG_DATA_MmPagedPoolCommitAddr ULONG64 返回内核变量 MmPagedPoolCommit 的地址。
DEBUG_DATA_MmExtendedCommitAddr ULONG64 返回内核变量 MmExtendedCommit.的地址。
DEBUG_DATA_MmZeroedPageListHeadAddr ULONG64 返回内核变量 MmZeroedPageListHead 的地址。
DEBUG_DATA_MmFreePageListHeadAddr ULONG64 返回内核变量 MmFreePageListHead 的地址。
DEBUG_DATA_MmStandbyPageListHeadAddr ULONG64 返回内核变量 MmStandbyPageListHead 的地址。
DEBUG_DATA_MmModifiedPageListHeadAddr ULONG64 返回内核变量 MmModifiedPageListHead 的地址。
DEBUG_DATA_MmModifiedNoWritePageListHeadAddr ULONG64 返回内核变量 MmModifiedNoWritePageListHead 的地址。
DEBUG_DATA_MmAvailablePagesAddr ULONG64 返回内核变量 MmAvailablePages 的地址。
DEBUG_DATA_MmResidentAvailablePagesAddr ULONG64 返回内核变量 MmResidentAvailablePages 的地址。
DEBUG_DATA_PoolTrackTableAddr ULONG64 返回内核变量 PoolTrackTable 的地址。
DEBUG_DATA_NonPagedPoolDescriptorAddr ULONG64 返回内核变量 NonPagedPoolDescriptor 的地址。
DEBUG_DATA_MmHighestUserAddressAddr ULONG64 返回内核变量 MmHighestUserAddress 的地址。
DEBUG_DATA_MmSystemRangeStartAddr ULONG64 返回内核变量 MmSystemRangeStart 的地址。
DEBUG_DATA_MmUserProbeAddressAddr ULONG64 返回内核变量 MmUserProbeAddress 的地址。
DEBUG_DATA_KdPrintCircularBufferAddr ULONG64 返回内核变量 KdPrintDefaultCircularBuffer
DEBUG_DATA_KdPrintCircularBufferEndAddr ULONG64 返回数组 KdPrintDefaultCircularBuffer 末尾的地址
DEBUG_DATA_KdPrintWritePointerAddr ULONG64 返回内核变量 KdPrintWritePointer 的地址。
DEBUG_DATA_KdPrintRolloverCountAddr ULONG64 返回内核变量 KdPrintRolloverCount 的地址。
DEBUG_DATA_MmLoadedUserImageListAddr ULONG64 返回内核变量 MmLoadedUserImageList 的地址。
DEBUG_DATA_PaeEnabled BOOLEAN 当目标系统启用了 PAE 时,返回 TRUE

否则返回 FALSE

DEBUG_DATA_SharedUserData ULONG64 返回共享用户模式结构的目标中的地址,KUSER_SHARED_DATA。 KUSER_SHARED_DATA结构在 Windows 驱动程序工具包) 的 ntddk.h (中定义,在 Windows SDK) 中定义 ntexapi.h (。

此结构中包含的某些信息由调试器扩展 !kuser 显示。

DEBUG_DATA_ProductType ULONG 返回共享用户模式页中 NtProductType 字段的值。

此值的解释方式应与 Windows SDK 中记录的结构 OSVERSIONINFOEX 的 wProductType 字段相同。

DEBUG_DATA_SuiteMask ULONG 返回共享用户模式页中 SuiteMask 字段的值。

此值的解释方式应与 Windows SDK 中记录的结构 OSVERSIONINFOEX 的 wSuiteMask 字段相同。

DEBUG_DATA_DumpWriterStatus ULONG 返回转储文件的编写器的状态。 此值特定于操作系统和转储文件类型。
 

以下值对 Windows XP 和更高版本的 Windows 有效:

返回类型 说明
DEBUG_DATA_NtBuildLabAddr ULONG64 返回内核变量 NtBuildLab 的地址。
DEBUG_DATA_KiNormalSystemCall ULONG64 (Itanium 仅) 返回内核函数 KiNormalSystemCall 的地址。
DEBUG_DATA_KiProcessorBlockAddr ULONG64 返回内核变量 KiProcessorBlock
DEBUG_DATA_MmUnloadedDriversAddr ULONG64 返回内核变量 MmUnloadedDrivers 的地址。
DEBUG_DATA_MmLastUnloadedDriverAddr ULONG64 返回内核变量 MmLastUnloadedDriver 的地址。
DEBUG_DATA_MmTriageActionTakenAddr ULONG64 返回内核变量 VerifierTriageActionTaken 的地址。
DEBUG_DATA_MmSpecialPoolTagAddr ULONG64 返回内核变量 MmSpecialPoolTag 的地址。
DEBUG_DATA_KernelVerifierAddr ULONG64 返回内核变量 KernelVerifier 的地址。
DEBUG_DATA_MmVerifierDataAddr ULONG64 返回内核变量 MmVerifierData 的地址。
DEBUG_DATA_MmAllocatedNonPagedPoolAddr ULONG64 返回内核变量 MmAllocatedNonPagedPool 的地址。
DEBUG_DATA_MmPeakCommitmentAddr ULONG64 返回内核变量 MmPeakCommitment 的地址。
DEBUG_DATA_MmTotalCommitLimitMaximumAddr ULONG64 返回内核变量 MmTotalCommitLimitMaximum 的地址。
DEBUG_DATA_CmNtCSDVersionAddr ULONG64 返回内核变量 CmNtCSDVersion 的地址。
DEBUG_DATA_MmPhysicalMemoryBlockAddr ULONG64 返回内核变量 MmPhysicalMemoryBlock 的地址。
DEBUG_DATA_MmSessionBase ULONG64 返回内核变量 MmSessionBase 的地址。
DEBUG_DATA_MmSessionSize ULONG64 返回内核变量 MmSessionSize 的地址。
DEBUG_DATA_MmSystemParentTablePage ULONG64 (Itanium 仅) 返回内核变量 MmSystemParentTablePage 的地址。
 

以下值对 Windows Server 2003 及更高版本的 Windows 有效:

返回类型 说明
DEBUG_DATA_MmVirtualTranslationBase ULONG64 返回内核变量 MmVirtualTranslationBase 的地址。
DEBUG_DATA_OffsetKThreadNextProcessor USHORT 返回 KTHREAD 结构中 NextProcessor 字段的偏移量。
DEBUG_DATA_OffsetKThreadTeb USHORT 返回 KTHREAD 结构中 Teb 字段的偏移量。
DEBUG_DATA_OffsetKThreadKernelStack USHORT 返回 KTHREAD 结构中 KernelStack 字段的偏移量。
DEBUG_DATA_OffsetKThreadInitialStack USHORT 返回 KTHREAD 结构中 InitialStack 字段的偏移量。
DEBUG_DATA_OffsetKThreadApcProcess USHORT 返回 KTHREAD 结构中 ApcState.Process 字段的偏移量。
DEBUG_DATA_OffsetKThreadState USHORT 返回 KTHREAD 结构中 State 字段的偏移量。
DEBUG_DATA_OffsetKThreadBStore USHORT (Itanium 仅) 返回 KTHREAD 结构中 InitialBStore 字段的偏移量。
DEBUG_DATA_OffsetKThreadBStoreLimit USHORT (Itanium 仅) 返回 KTHREAD 结构中 BStoreLimit 字段的偏移量。
DEBUG_DATA_SizeEProcess USHORT 返回 EPROCESS 结构的大小。
DEBUG_DATA_OffsetEprocessPeb USHORT 返回 EPROCESS 结构中 Peb 字段的偏移量。
DEBUG_DATA_OffsetEprocessParentCID USHORT 返回 EPROCESS 结构中 InheritedFromUniqueProcessId 字段的偏移量。
DEBUG_DATA_OffsetEprocessDirectoryTableBase USHORT 返回 EPROCESS 结构中 DirectoryTableBase 字段的偏移量。
DEBUG_DATA_SizePrcb USHORT 返回 KPRCB 结构的大小。
DEBUG_DATA_OffsetPrcbDpcRoutine USHORT 返回 KPRCB 结构中 DpcRoutineActive 字段的偏移量。
DEBUG_DATA_OffsetPrcbCurrentThread USHORT 返回 KPRCB 结构中 CurrentThread 字段的偏移量。
DEBUG_DATA_OffsetPrcbMhz USHORT 返回 KPRCB 结构中 MHz 字段的偏移量。
DEBUG_DATA_OffsetPrcbCpuType USHORT 对于 Itanium 处理器: 返回 KPRCB 结构中 ProcessorModel 字段的偏移量。

对于所有其他处理器: 返回 KPRCB 结构中 CpuType 字段的偏移量。

DEBUG_DATA_OffsetPrcbVendorString USHORT 对于 Itanium 处理器: 返回 KPRCB 结构中 ProcessorVendorString 字段的偏移量。

对于所有其他处理器: 返回 KPRCB 结构中 VendorString 字段的偏移量。

DEBUG_DATA_OffsetPrcbProcessorState USHORT 返回 KPRCB 结构中 ProcessorState.ContextFrame 字段的偏移量。
DEBUG_DATA_OffsetPrcbNumber USHORT 返回 KPRCB 结构中 “数字 ”字段的偏移量。
DEBUG_DATA_SizeEThread USHORT 返回 ETHREAD 结构的大小。
DEBUG_DATA_KdPrintCircularBufferPtrAddr ULONG64 返回内核变量 KdPrintCircularBuffer 的地址。
DEBUG_DATA_KdPrintBufferSizeAddr ULONG64 返回内核变量 KdPrintBufferSize 的地址。

[out] Buffer

接收指定调试器数据的值。 上表中的“返回类型”列指定返回的数据类型。 可以通过将 Buffer 强制转换为指向该类型的指针来访问数据。

[in] BufferSize

指定缓冲区 缓冲区的大小(以字节为单位)。

[out, optional] DataSize

接收缓冲区 缓冲区中使用的字节数。 如果 DataSizeNULL,则不会返回此信息。

返回值

返回代码 说明
S_OK
方法成功。
 

此方法还可以返回错误值。 有关更多详细信息 ,请参阅返回值

注解

某些或所有值在某些调试会话中可能不可用。 例如,某些值仅适用于特定版本的操作系统。

有关 ReadDebuggerData 返回的不同值的详细信息,请参阅 Microsoft Windows Internals by David Solomon 和 Mark Russinovich、Microsoft Windows SDK和 Windows Driver Kit (WDK) 。

要求

要求
目标平台 桌面
标头 dbgeng.h (包括 Dbgeng.h)