Partager via


IDiaEnumSymbolsByAddr

Énumère par l'adresse que différents symboles auront contenue dans la source de données.

IDiaEnumSymbolsByAddr : IUnknown

méthodes en commande de Vtable

Le tableau suivant répertorie les méthodes d' IDiaEnumSymbolsByAddr.

Méthode

Description

IDiaEnumSymbolsByAddr::symbolByAddr

positionne l'énumérateur en effectuant une recherche par la section et l'offset.

IDiaEnumSymbolsByAddr::symbolByRVA

Positionne l'énumérateur en effectuant une recherche par l'adresse virtuelle associée (RVA).

IDiaEnumSymbolsByAddr::symbolByVA

positionne l'énumérateur en effectuant une recherche par l'adresse virtuelle (VA).

IDiaEnumSymbolsByAddr::Next

Récupère les symboles ci-dessous dans l'ordre par l'adresse. Met à jour la position d'énumérateur par le nombre d'éléments récupérés.

IDiaEnumSymbolsByAddr::Prev

Récupère les symboles précédents dans l'ordre par l'adresse. Met à jour la position d'énumérateur par le nombre d'éléments récupérés.

IDiaEnumSymbolsByAddr::Clone

Effectue une copie d'un objet.

Notes

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

Remarques pour les appelants

obtenez cette interface en appelant la méthode d' IDiaSession::getSymbolsByAddr .

Exemple

Cette fonction affiche le nom et l'adresse de tous les symboles classés par l'adresse virtuelle associée.

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

Référence

IDiaSession::getSymbolsByAddr

IDiaEnumSymbols

Autres ressources

Interfaces (Kit de développement logiciel de Debug Interface Access)