IDebugDataSpaces3::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 |
대상 시스템이 PAE를 사용하도록 설정된 경우 TRUE 를 반환합니다.
그렇지 않으면 FALSE 를 반환합니다. |
DEBUG_DATA_SharedUserData | ULONG64 |
KUSER_SHARED_DATA 공유 사용자 모드 구조의 대상에 있는 주소를 반환합니다. KUSER_SHARED_DATA 구조체는 ntddk.h(Windows 드라이버 키트) 및 ntexapi.h(Windows SDK)로 정의됩니다.
이 구조에 포함된 정보 중 일부는 디버거 확장 !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 구조체의 상태 필드 오프셋을 반환합니다. |
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
지정된 디버거 데이터의 값을 받습니다. 위 표의 "반환 형식" 열은 반환되는 데이터 형식을 지정합니다. 버퍼를 해당 형식에 대한 포인터로 캐스팅하여 데이터에 액세스할 수 있습니다.
[in] BufferSize
버 퍼 버퍼의 크기(바이트)를 지정합니다.
[out, optional] DataSize
버 퍼 버퍼에 사용된 바이트 수를 받습니다. DataSize가 NULL이면 이 정보가 반환되지 않습니다.
반환 값
반환 코드 | Description |
---|---|
|
메서드를 성공적으로 수행했습니다. |
이 메서드는 오류 값을 반환할 수도 있습니다. 자세한 내용은 반환 값을 참조하세요.
설명
특정 디버깅 세션에서 일부 또는 모든 값을 사용할 수 없습니다. 예를 들어 일부 값은 특정 버전의 운영 체제에서만 사용할 수 있습니다.
ReadDebuggerData에서 반환하는 다양한 값에 대한 자세한 내용은 David Solomon의 Microsoft Windows Internals 및 Mark Russinovich, Microsoft Windows SDK 및 WDK(Windows 드라이버 키트)를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | dbgeng.h(Dbgeng.h 포함) |