Partilhar via


IDiaEnumSymbolsByAddr

Enumera os vários símbolos contidos na fonte de dados por endereço.

IDiaEnumSymbolsByAddr : IUnknown

Métodos na ordem de Vtable

A tabela a seguir mostra os métodos de IDiaEnumSymbolsByAddr.

Método

Descrição

IDiaEnumSymbolsByAddr::symbolByAddr

Posiciona o enumerador realizando uma pesquisa por seção e deslocamento.

IDiaEnumSymbolsByAddr::symbolByRVA

Posiciona o enumerador realizando uma pesquisa por endereço virtual relativo (RVA).

IDiaEnumSymbolsByAddr::symbolByVA

Posiciona o enumerador realizando uma pesquisa por endereço virtual (VA).

IDiaEnumSymbolsByAddr::Next

Recupera os próximo símbolos em ordem por endereço. Atualiza a posição do enumerador pelo número de elementos buscados.

IDiaEnumSymbolsByAddr::Prev

Recupera os símbolos anteriores na ordem por endereço. Atualiza a posição do enumerador pelo número de elementos buscados.

IDiaEnumSymbolsByAddr::Clone

Faz uma cópia de um objeto.

Comentários

Essa interface fornece símbolos agrupados por endereço. Para trabalhar com símbolos agrupados por tipo, por exemplo SymTagUDT (tipo definido pelo usuário) ou SymTagBaseClass, use o IDiaEnumSymbols interface.

Observações para chamadores

Obter essa interface chamando o IDiaSession::getSymbolsByAddr método.

Exemplo

Esta função exibe o nome e endereço de todos os símbolos ordenados por endereço virtual relativo.

void ShowSymbolsByAddress(IDiaSession *pSession)
{
    CComPtr<IDiaEnumSymbolsByAddr> pEnumByAddr;
    if ( FAILED( psession->getSymbolsByAddr( &pEnumByAddr ) ) )
    {
        Fatal( "getSymbolsByAddr" );
    }
    CComPtr<IDiaSymbol> pSym;
    if ( FAILED( pEnumByAddr->symbolByAddr( 1, 0, &pSym ) ) )
    {
        Fatal( "symbolByAddr" );
    }
    DWORD rvaLast = 0;
    if ( pSym->get_relativeVirtualAddress( &rvaLast ) == S_OK )
    {
        pSym = 0;
        if ( FAILED( pEnumByAddr->symbolByRVA( rvaLast, &pSym ) ) )
        {
            Fatal( "symbolByAddr" );
        }
        printf( "Symbols in order\n" );
        do
        { 
            CDiaBSTR name;
            if ( pSym->get_name( &name ) != S_OK )
            {
                printf( "\t0x%08X (%ws) <no name>\n", rvaLast );
            }
            else
            {
               printf( "\t0x%08X %ws\n", rvaLast, name );
            }
            pSym = 0;
            celt = 0;
            if ( FAILED( hr = pEnumByAddr->Next( 1, &pSym, &celt ) ) )
            {
                break;
            }
        } while ( celt == 1 );
    }
}

Requisitos

Cabeçalho: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Consulte também

Referência

IDiaSession::getSymbolsByAddr

IDiaEnumSymbols

Outros recursos

Interfaces (SDK de Acesso à Interface de Depuração)