IDiaImageDataIDiaImageData

Expõe os detalhes da base deslocamentos de memória e o local do módulo ou da imagem.Exposes the details of the base location and memory offsets of the module or image.

SintaxeSyntax

IDiaImageData : IUnknown  

Métodos na ordem VtableMethods in Vtable Order

A tabela a seguir mostra os métodos de IDiaImageData.The following table shows the methods of IDiaImageData.

MétodoMethod DescriçãoDescription
IDiaImageData::get_relativeVirtualAddressIDiaImageData::get_relativeVirtualAddress Recupera o local na memória virtual do módulo relativo ao aplicativo.Retrieves the location in virtual memory of the module relative to the application.
IDiaImageData::get_virtualAddressIDiaImageData::get_virtualAddress Recupera o local na memória virtual da imagem.Retrieves the location in virtual memory of the image.
IDiaImageData::get_imageBaseIDiaImageData::get_imageBase Recupera o local de memória em que a imagem deve ser baseada.Retrieves the memory location where the image should be based.

ComentáriosRemarks

Alguns fluxos de depuração (XDATA, PDATA) contêm cópias de dados também são armazenados na imagem.Some debug streams (XDATA, PDATA) contain copies of data also stored in the image. Esses transmitir dados de objetos podem ser consultados para o IDiaImageData interface.These stream data objects can be queried for the IDiaImageData interface. Consulte a seção "Observações para chamadores" neste tópico para obter detalhes.See the "Notes for Callers" section in this topic for details.

Observações para chamadoresNotes for Callers

Obter essa interface chamando QueryInterface em uma IDiaEnumDebugStreamData objeto.Obtain this interface by calling QueryInterface on an IDiaEnumDebugStreamData object. Observe que nem todos os depurar fluxos suporte a IDiaImageData interface.Note that not all debug streams support the IDiaImageData interface. Por exemplo, atualmente apenas os fluxos XDATA e PDATA oferecem suporte a IDiaImageData interface.For example, currently only the XDATA and PDATA streams support the IDiaImageData interface.

ExemploExample

Este exemplo procura todos os fluxos de depuração para qualquer fluxo com suporte para o IDiaImageData interface.This example searches all of the debug streams for any stream that supports the IDiaImageData interface. Se tal um fluxo for encontrado, algumas informações sobre esse fluxo são exibidas.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);  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    }  
}  

RequisitosRequirements

Cabeçalho: Dia2.hHeader: Dia2.h

Biblioteca: diaguids.libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Consulte tambémSee Also

Interfaces (SDK de acesso à Interface de depuração) Interfaces (Debug Interface Access SDK)
IDiaEnumDebugStreamDataIDiaEnumDebugStreamData