Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vytvoří výčet pomocí adres různých symbolů obsažených ve zdroji dat.
Syntaxe
IDiaEnumSymbolsByAddr2 : IDiaEnumSymbolsByAdd
Metody v pořadí Vtable
Následující tabulka ukazuje metody IDiaEnumSymbolsByAddr2.
| metoda | Popis |
|---|---|
IDiaEnumSymbolsByAddr2::symbolByAddrEx |
Umístí enumerátor provedením vyhledávání podle oddílu a posunu. |
IDiaEnumSymbolsByAddr2::symbolByRVAEx |
Umístí enumerátor provedením vyhledávání podle relativní virtuální adresy (RVA). |
IDiaEnumSymbolsByAddr2::symbolByVAEx |
Umístí enumerátor provedením vyhledávání podle virtuální adresy (VA). |
IDiaEnumSymbolsByAddr2::NextEx |
Načte další symboly v pořadí podle adresy. Aktualizuje pozici enumerátoru podle počtu načtených prvků. |
IDiaEnumSymbolsByAddr2::PrevEx |
Načte předchozí symboly v pořadí podle adresy. Aktualizuje pozici enumerátoru podle počtu načtených prvků. |
Poznámky
Toto rozhraní poskytuje symboly seskupené podle adresy. Pokud chcete pracovat se symboly seskupenými podle typu, například SymTagUDT (typ definovaný uživatelem) nebo SymTagBaseClasspoužijte IDiaEnumSymbols rozhraní.
Poznámky pro volající
Získejte toto rozhraní voláním IDiaSession::getSymbolsByAddr metody a voláním IUnknown::QueryInterface s parametrem nastaveným riid na IID_IDiaEnumSymbolsByAddr2.
Příklad
Tato funkce zobrazí název a adresu všech symbolů seřazených podle relativní virtuální adresy.
void ShowSymbolsByAddress(IDiaSession *pSession)
{
CComPtr<IDiaEnumSymbolsByAddr> pEnumByAddr;
if ( FAILED( psession->getSymbolsByAddr( &pEnumByAddr ) ) )
{
Fatal( "getSymbolsByAddr" );
}
CComPtr<IDiaEnumSymbolsByAddr2> pEnumByAddr2;
if ( FAILED( pEnumByAddr->QueryInterface( IID_IDiaEnumSymbolsByAddr2, &pEnumByAddr2 ) ) )
{
Fatal( "getSymbolsByAddr" );
}
CComPtr<IDiaSymbol> pSym;
if ( FAILED( pEnumByAddr2->symbolByAddrEx( FALSE, 1, 0, &pSym ) ) )
{
Fatal( "symbolByAddr" );
}
DWORD rvaLast = 0;
if ( pSym->get_relativeVirtualAddress( &rvaLast ) == S_OK )
{
pSym = 0;
if ( FAILED( pEnumByAddr2->symbolByRVAEx( FALSE, 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 = pEnumByAddr2->NextEx( FALSE, 1, &pSym, &celt ) ) )
{
break;
}
} while ( celt == 1 );
}
}
Požadavky
Hlavička: Dia2.h
Knihovna: diaguids.lib
DLL: msdia140.dll