Udostępnij za pośrednictwem


IDiaImageData

Opisuje szczegóły bazowy przesunięcia lokalizacji i pamięci modułu lub obrazu.

IDiaImageData : IUnknown

Metody w kolejności Vtable

W poniższej tabeli przedstawiono metody IDiaImageData.

Metoda

Opis

IDiaImageData::get_relativeVirtualAddress

Pobiera lokalizacji w pamięci wirtualnej modułu w stosunku do aplikacji.

IDiaImageData::get_virtualAddress

Pobiera lokalizacji w pamięci wirtualnej obrazu.

IDiaImageData::get_imageBase

Pobiera lokalizacji pamięci, gdzie oparte obrazu.

Uwagi

Niektóre strumienie debugowania (XDATA, PDATA) zawierają kopie danych również przechowywane na obrazie.Te strumienia danych, obiekty mogą być wysyłane kwerendy do IDiaImageData interfejsu.W sekcji "Uwagi do wywoływania" w tym temacie, aby uzyskać szczegółowe informacje.

Uwagi do wywoływania

Ten interfejs uzyskać, wywołując QueryInterface na IDiaEnumDebugStreamData obiektu.Należy zauważyć, że nie wszystkie debugowania strumieni wsparcie IDiaImageData interfejsu.Na przykład, obecnie obsługuje tylko strumienie XDATA i PDATA IDiaImageData interfejsu.

Przykład

W tym przykładzie wyszukiwane wszystkie strumienie debugowania dla wszelkich strumienia, który obsługuje IDiaImageData interfejsu.Jeśli zostanie znaleziony taki strumienia, niektóre informacje dotyczące tego strumienia jest wyświetlany.

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);
                            }
                        }
                    }
                }
            }
        }
    }
}

Wymagania

Nagłówek: Dia2.h

Biblioteki: diaguids.lib

Biblioteka DLL: msdia80.dll

Zobacz też

Informacje

IDiaEnumDebugStreamData

Inne zasoby

Interfejsy (dostęp do interfejsu SDK debugowanie)