IDiaImageDataIDiaImageData

Macht die Details des Basis Speicher Orts und der Speicher Offsets des Moduls oder Bilds verfügbar.Exposes the details of the base location and memory offsets of the module or image.

SyntaxSyntax

IDiaImageData : IUnknown

Methoden in Vtable-ReihenfolgeMethods in Vtable Order

In der folgenden Tabelle sind die Methoden von IDiaImageData aufgeführt.The following table shows the methods of IDiaImageData.

MethodeMethod BeschreibungDescription
IDiaImageData::get_relativeVirtualAddressIDiaImageData::get_relativeVirtualAddress Ruft den Speicherort im virtuellen Arbeitsspeicher des Moduls relativ zur Anwendung ab.Retrieves the location in virtual memory of the module relative to the application.
IDiaImageData::get_virtualAddressIDiaImageData::get_virtualAddress Ruft den Speicherort im virtuellen Speicher des Bilds ab.Retrieves the location in virtual memory of the image.
IDiaImageData::get_imageBaseIDiaImageData::get_imageBase Ruft den Speicherort ab, an dem das Image basieren soll.Retrieves the memory location where the image should be based.

HinweiseRemarks

Einige debugstreams (XData, pData) enthalten Kopien von Daten, die ebenfalls im Image gespeichert sind.Some debug streams (XDATA, PDATA) contain copies of data also stored in the image. Diese Stream-Datenobjekte können für die IDiaImageData-Schnittstelle abgefragt werden.These stream data objects can be queried for the IDiaImageData interface. Weitere Informationen finden Sie im Abschnitt "Hinweise zu Aufrufern" in diesem Thema.See the "Notes for Callers" section in this topic for details.

Hinweise für AufruferNotes for Callers

Rufen Sie diese Schnittstelle ab, indem Sie QueryInterface für ein IDiaEnumDebugStreamData -Objekt aufrufen.Obtain this interface by calling QueryInterface on an IDiaEnumDebugStreamData object. Beachten Sie, dass nicht alle debugstreams die IDiaImageData Schnittstelle unterstützen.Note that not all debug streams support the IDiaImageData interface. Beispielsweise unterstützen derzeit nur die XData-und pData-Streams die IDiaImageData-Schnittstelle.For example, currently only the XDATA and PDATA streams support the IDiaImageData interface.

BeispielExample

In diesem Beispiel werden alle debugstreams nach allen Datenströmen durchsucht, die die IDiaImageData-Schnittstelle unterstützen.This example searches all of the debug streams for any stream that supports the IDiaImageData interface. Wenn ein solcher Stream gefunden wird, werden einige Informationen zu diesem Stream angezeigt.If such a stream is found, some information about that stream is displayed.

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

AnforderungenRequirements

Header: Dia2.hHeader: Dia2.h

Bibliothek: diaguids. libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Siehe auchSee also