다음을 통해 공유


IDiaImageData

기본 위치 및 메모리 오프셋 모듈 또는 이미지의 세부 정보를 제공합니다.

IDiaImageData : IUnknown

메서드에서 Vtable 순서

다음 표에서 메서드를 IDiaImageData.

메서드

설명

IDiaImageData::get_relativeVirtualAddress

가상 메모리 모듈이 응용 프로그램에 상대적인 위치를 검색합니다.

IDiaImageData::get_virtualAddress

가상 메모리에서 이미지의 위치를 검색합니다.

IDiaImageData::get_imageBase

이미지를 기반으로 해야 합니다 메모리 위치를 검색 합니다.

설명

일부 디버그 스트림을 (XDATA, PDATA) 또한 이미지에 저장 된 데이터의 복사본을 포함 합니다.이러한 개체를 쿼리할 수 있는 데이터를 스트리밍하는 IDiaImageData 인터페이스입니다.자세한 내용은이 항목의 "호출자에 대 한 참고 사항" 단원을 참조 하십시오.

호출자에 대 한 참고 사항

이 인터페이스를 호출 하 여 얻을 QueryInterface 에 있는 IDiaEnumDebugStreamData 개체입니다.참고 모두 디버그 스트림을 지원의 IDiaImageData 인터페이스입니다.XDATA 및 PDATA 스트림을 지 원하는 등 현재는 IDiaImageData 인터페이스입니다.

예제

이 예제는 디버그 스트림을 지 원하는 모든 스트림에 대 한 모든 검색은 IDiaImageData 인터페이스입니다.이러한 스트림에서 발견 되 면 해당 스트림에 대 한 정보는 표시 됩니다.

void ShowImageData(IDiaSession *pSession)
{
    if (pSession != NULL)
    {
        CComPtr<IDiaEnumDebugStreams> pStreamsList;
        HRESULT hr;

        hr = pSession->getEnumDebugStreams(&pStreamsList);
        if (SUCCEEDED(hr))
        {
            LONG numStreams = 0;
            hr = pStreamsList->get_Count(&numStreams);
            if (SUCCEEDED(hr))
            {
                ULONG fetched = 0;
                for (LONG i = 0; i < numStreams; i++)
                {
                    CComPtr<IDiaEnumDebugStreamData> pStream;
                    hr = pStreamsList->Next(1,&pStream,&fetched);
                    if (fetched == 1)
                    {
                        CComPtr<IDiaImageData> pImageData;
                        hr = pStream->QueryInterface(__uuidof(IDiaImageData),
                                                     (void **)&pImageData);
                        if (SUCCEEDED(hr))
                        {
                            CComBSTR name;
                            hr = pStream->get_name(&name);
                            if (SUCCEEDED(hr))
                            {
                                wprintf(L"Stream %s:\n",(BSTR)name);
                            }
                            else
                            {
                                wprintf(L"Failed to get name of stream\n");
                            }
                            

                            ULONGLONG imageBase = 0;
                            if (pImageData->get_imageBase(&imageBase) == S_OK)
                            {
                                wprintf(L"  image base = 0x%0I64x\n",imageBase);
                            }

                            DWORD relVA = 0;
                            if (pImageData->get_relativeVirtualAddress(&relVA) == S_OK)
                            {
                                wprintf(L"  relative virtual address = 0x%08lx\n",relVA);
                            }

                            ULONGLONG va = 0;
                            if (pImageData->get_virtualAddress(&va) == S_OK)
                            {
                                wprintf(L"  virtual address = 0x%0I64x\n", va);
                            }
                        }
                    }
                }
            }
        }
    }
}

요구 사항

헤더: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목

참조

IDiaEnumDebugStreamData

기타 리소스

인터페이스(디버그 인터페이스 액세스 SDK)