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