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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour