Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Listet die verschiedenen Symbole, die in der Datenquelle enthalten sind, anhand der Adressen auf.
Syntax
IDiaEnumSymbolsByAddr : IUnknown
Methoden in Vtable-Reihenfolge
In der folgenden Tabelle sind die Methoden von IDiaEnumSymbolsByAddr
aufgeführt.
Methode | BESCHREIBUNG |
---|---|
IDiaEnumSymbolsByAddr::symbolByAddr | Positioniert den Enumerator, indem nach Abschnitt und Offset gesucht wird. |
IDiaEnumSymbolsByAddr::symbolByRVA | Positioniert den Enumerator, indem nach relativer virtueller Adresse (RVA) gesucht wird. |
IDiaEnumSymbolsByAddr::symbolByVA | Positioniert den Enumerator, indem nach virtueller Adresse (VA) gesucht wird. |
IDiaEnumSymbolsByAddr::Next | Ruft die nächsten Symbole in der Reihenfolge anhand der Adresse ab. Aktualisiert die Enumeratorposition anhand der Anzahl der abgerufenen Elemente. |
IDiaEnumSymbolsByAddr::Prev | Ruft die vorherigen Symbole in der Reihenfolge anhand der Adresse ab. Aktualisiert die Enumeratorposition anhand der Anzahl der abgerufenen Elemente. |
IDiaEnumSymbolsByAddr::Clone | Erstellt eine Kopie eines Objekts. |
Hinweise
Diese Schnittstelle stellt nach Adresse gruppierte Symbole bereit. Um mit nach Typ gruppierten Symbolen zu arbeiten, z. B. SymTagUDT
(benutzerdefinierter Typ) oder SymTagBaseClass
, verwenden Sie die IDiaEnumSymbols-Schnittstelle.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle ab, indem Sie die IDiaSession::getSymbolsByAddr-Methode aufrufen.
Beispiel
Diese Funktion zeigt den Namen und die Adresse aller Symbole an, sortiert nach relativer virtueller Adresse.
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 );
}
}
Requirements (Anforderungen)
Header: Dia2.h
Bibliothek: diaguids.lib
DLL: msdia80.dll