Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
É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