Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Macht die Details der Speicherort- Arbeitsspeicher und Offset des Moduls oder eines Bilds.
IDiaImageData : IUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaImageDataan.
Methode |
Beschreibung |
|---|---|
Ruft die Position im virtuellen Speicher des Moduls relativ zur Anwendung ab. |
|
Ruft die Position im virtuellen Speicher des Bilds ab. |
|
Ruft die Speicheradresse ab, in der das Bild basieren soll. |
Hinweise
Einige von Streams (XDATA und PDATA) enthalten Kopien der Daten, die auch im Bild gespeichert werden.Diese Stream datenobjekte können für die IDiaImageData-Schnittstelle abgefragt werden.Weitere Informationen finden Sie im Abschnitt „Hinweise für Aufrufer“ in diesem Thema.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie QueryInterface auf einem IDiaEnumDebugStreamData-Objekts aufruft.Beachten Sie, dass nicht alle Streams unterstützen die IDiaImageData-Schnittstelle debuggen.Zum Beispiel nur die derzeit XDATA- und PDATA-Datenströme unterstützen die IDiaImageData-Schnittstelle.
Beispiel
In diesem Beispiel wird in allen Debuggen von Streams für jeden Datenstrom, der die IDiaImageData-Schnittstelle unterstützt.Wenn ein solcher Streams gefunden wird, werden einige Informationen über diesen Stream angezeigt.
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);
}
}
}
}
}
}
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll