Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Espone i dettagli relativi agli offset di base di memoria e sulla posizione del modulo o dell'immagine.
IDiaImageData : IUnknown
Metodi nell'ordine di Vtable
Nella tabella seguente sono elencati i metodi di IDiaImageData.
Metodo |
Descrizione |
|---|---|
Recupera la posizione in memoria virtuale del modulo relativo all'applicazione. |
|
Recupera la posizione in memoria virtuale dell'immagine. |
|
Recupera la posizione di memoria in cui l'immagine deve essere basata. |
Note
Alcuni flussi di debug (XDATA, PDATA) contengono copie dei dati anche archiviati nell'immagine.Questi oggetti dati del flusso è possibile eseguire una query per IDiaImageData interfaccia.Vedere la sezione “note per i chiamanti„ in questo argomento per i dettagli.
Note per i chiamanti
Leggi questa interfaccia chiamando QueryInterface su IDiaEnumDebugStreamData oggetto.si noti che non tutti i flussi di debug supportano IDiaImageData interfaccia.Ad esempio, attualmente i flussi di PDATA e solo di XDATA supportano IDiaImageData interfaccia.
Esempio
In questo esempio vengono ricercati tutti i flussi di debug del flusso che supporta IDiaImageData interfaccia.Se tale flusso viene trovato, alcune informazioni relative al flusso visualizzare.
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);
}
}
}
}
}
}
}
}
Requisiti
intestazione: Dia2.h
raccolta: diaguids.lib
DLL: msdia80.dll