Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Modülün veya görüntünün temel konumunun ve bellek uzaklıklarının ayrıntılarını kullanıma sunar.
Sözdizimi
IDiaImageData : IUnknown
Vtable Sırasına Göre Yöntemler
Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaImageData.
| Metot | Açıklama |
|---|---|
| IDiaImageData::get_relativeVirtualAddress | Modülün uygulamaya göre sanal belleğindeki konumu alır. |
| IDiaImageData::get_virtualAddress | Görüntünün sanal belleğindeki konumu alır. |
| IDiaImageData::get_imageBase | Görüntünün temel alınması gereken bellek konumunu alır. |
Açıklamalar
Bazı hata ayıklama akışları (XDATA, PDATA) görüntüde depolanan verilerin kopyalarını içerir. Bu akış veri nesneleri arabirim için IDiaImageData sorgulanabilir. Ayrıntılar için bu konudaki "Arayanlar için Notlar" bölümüne bakın.
Arayanlar İçin Notlar
Bir IDiaEnumDebugStreamData nesnesi üzerinde çağırarak QueryInterface bu arabirimi alın. Tüm hata ayıklama akışlarının arabirimi desteklemediğini IDiaImageData unutmayın. Örneğin, şu anda arabirimi yalnızca XDATA ve PDATA akışları destekler IDiaImageData .
Örnek
Bu örnek, tüm hata ayıklama akışlarında arabirimi destekleyen IDiaImageData herhangi bir akışı arar. Böyle bir akış bulunursa, bu akışla ilgili bazı bilgiler görüntülenir.
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);
}
}
}
}
}
}
}
}
Gereksinimler
Üst bilgi: Dia2.h
Kitaplık: diaguids.lib
DLL: msdia80.dll