Поделиться через


Метод IDebugDataSpaces::ReadDebuggerData (dbgeng.h)

Метод ReadDebuggerData возвращает сведения о целевом объекте, который обработчик отладчика запросил или определил во время текущего сеанса. Доступные сведения включают расположение определенных ключевых целевых расположений ядра, конкретные значения состояния и ряд других вещей.

Синтаксис

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

Параметры

[in] Index

Указывает индекс извлекаемых данных. Допустимы следующие значения.

Значение Тип возвращаемых данных Описание
DEBUG_DATA_KernBase ULONG64 Возвращает базовый адрес образа ядра.
DEBUG_DATA_BreakpointWithStatusAddr ULONG64 Возвращает адрес функции ядра BreakpointWithStatusInstruction.
DEBUG_DATA_SavedContextAddr ULONG64 Возвращает адрес сохраненной записи контекста во время проверки ошибок. Он действителен только после проверки ошибок.
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 Возвращает значение TRUE , если в целевой системе включено PAE.

В противном случае возвращает значение FALSE .

DEBUG_DATA_SharedUserData ULONG64 Возвращает адрес в целевом объекте общей структуры пользовательского режима, KUSER_SHARED_DATA. Структура KUSER_SHARED_DATA определена в ntddk.h (в комплекте драйверов Windows) и ntexapi.h (в windows SDK).

Некоторые сведения, содержащиеся в этой структуре, отображаются расширением отладчика !kuser.

DEBUG_DATA_ProductType ULONG Возвращает значение поля NtProductType на странице общего пользовательского режима.

Это значение должно интерпретироваться так же, как поле wProductType структуры OSVERSIONINFOEX, которое описано в windows SDK.

DEBUG_DATA_SuiteMask ULONG Возвращает значение поля SuiteMask на странице общего пользовательского режима.

Это значение должно интерпретироваться так же, как поле wSuiteMask структуры OSVERSIONINFOEX, которое описано в windows SDK.

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 Возвращает смещение поля NextProcessor в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadTeb USHORT Возвращает смещение поля Teb в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadKernelStack USHORT Возвращает смещение поля KernelStack в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadInitialStack USHORT Возвращает смещение поля InitialStack в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadApcProcess USHORT Возвращает смещение поля ApcState.Process в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadState USHORT Возвращает смещение поля State в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadBStore USHORT (только Itanium) Возвращает смещение поля InitialBStore в структуре KTHREAD.
DEBUG_DATA_OffsetKThreadBStoreLimit USHORT (только Itanium) Возвращает смещение поля BStoreLimit в структуре KTHREAD.
DEBUG_DATA_SizeEProcess USHORT Возвращает размер структуры EPROCESS.
DEBUG_DATA_OffsetEprocessPeb USHORT Возвращает смещение поля Peb в структуре EPROCESS.
DEBUG_DATA_OffsetEprocessParentCID USHORT Возвращает смещение поля InheritedFromUniqueProcessId в структуре EPROCESS.
DEBUG_DATA_OffsetEprocessDirectoryTableBase USHORT Возвращает смещение поля DirectoryTableBase в структуре EPROCESS.
DEBUG_DATA_SizePrcb USHORT Возвращает размер структуры KPRCB.
DEBUG_DATA_OffsetPrcbDpcRoutine USHORT Возвращает смещение поля DpcRoutineActive в структуре KPRCB.
DEBUG_DATA_OffsetPrcbCurrentThread USHORT Возвращает смещение поля CurrentThread в структуре KPRCB.
DEBUG_DATA_OffsetPrcbMhz USHORT Возвращает смещение поля МГц в структуре KPRCB.
DEBUG_DATA_OffsetPrcbCpuType USHORT Для процессоров Itanium: Возвращает смещение поля ProcessorModel в структуре KPRCB.

Для всех остальных процессоров: Возвращает смещение поля CpuType в структуре KPRCB.

DEBUG_DATA_OffsetPrcbVendorString USHORT Для процессоров Itanium: Возвращает смещение поля ProcessorVendorString в структуре KPRCB.

Для всех остальных процессоров: Возвращает смещение поля VendorString в структуре KPRCB.

DEBUG_DATA_OffsetPrcbProcessorState USHORT Возвращает смещение поля ProcessorState.ContextFrame в структуре KPRCB.
DEBUG_DATA_OffsetPrcbNumber USHORT Возвращает смещение поля Число в структуре KPRCB.
DEBUG_DATA_SizeEThread USHORT Возвращает размер структуры ETHREAD.
DEBUG_DATA_KdPrintCircularBufferPtrAddr ULONG64 Возвращает адрес переменной ядра KdPrintCircularBuffer.
DEBUG_DATA_KdPrintBufferSizeAddr ULONG64 Возвращает адрес переменной ядра KdPrintBufferSize.

[out] Buffer

Получает значение указанных данных отладчика. Столбец "Тип возвращаемого значения" в приведенной выше таблице указывает возвращаемый тип данных. Доступ к данным можно получить путем приведения буфера к указателю на этот тип.

[in] BufferSize

Задает размер буфера буфера буфера в байтах.

[out, optional] DataSize

Получает количество байтов, используемых в буфере буфера. Если DataSize имеет значение NULL, эти сведения не возвращаются.

Возвращаемое значение

Код возврата Описание
S_OK
Метод выполнен успешно.
 

Этот метод также может возвращать значения ошибок. Дополнительные сведения см. в разделе Возвращаемые значения .

Комментарии

Некоторые или все значения могут быть недоступны в определенных сеансах отладки. Например, некоторые значения доступны только для определенных версий операционной системы.

Дополнительные сведения о различных значениях, возвращаемых ReadDebuggerData, см. в статье Microsoft Windows Internals by David Solomon and Mark Russinovich, the Microsoft Windows SDK, and the Windows Driver Kit (WDK).

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dbgeng.h (включая Dbgeng.h)