IDiaEnumSymbolsByAddr

Énumère par adresse les différents symboles contenus dans la source de données.

Syntax

IDiaEnumSymbolsByAddr : IUnknown

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDiaEnumSymbolsByAddr.

Méthode Description
IDiaEnumSymbolsByAddr::symbolByAddr Positionne l’énumérateur en effectuant une recherche par section et décalage.
IDiaEnumSymbolsByAddr::symbolByRVA Positionne l’énumérateur en effectuant une recherche par adresse virtuelle relative (RVA).
IDiaEnumSymbolsByAddr::symbolByVA Positionne l’énumérateur en effectuant une recherche par adresse virtuelle (VA).
IDiaEnumSymbolsByAddr::Next Récupère les symboles suivants dans l’ordre par adresse. Met à jour la position de l’énumérateur par nombre d’éléments récupérés.
IDiaEnumSymbolsByAddr::Prev Récupère les symboles précédents dans l’ordre par adresse. Met à jour la position de l’énumérateur par nombre d’éléments récupérés.
IDiaEnumSymbolsByAddr::Clone Effectue une copie d’un objet.

Remarques

Cette interface fournit des symboles regroupés par adresse. Pour utiliser des symboles regroupés par type, par exemple SymTagUDT (type défini par l’utilisateur) ou SymTagBaseClass, utilisez l’interface IDiaEnumSymbols.

Remarques pour les appelants

Obtenez cette interface en appelant la méthode IDiaSession::getSymbolsByAddr.

Exemple

Cette fonction affiche le nom et l’adresse de tous les symboles classés par adresse virtuelle relative.

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 );
    }
}

Configuration requise

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia80.dll

Voir aussi