IDiaEnumSymbolsByAddr
Listet durch Adresse aufgeführt, in denen die verschiedenen Symbole in der Datenquelle enthalten.
IDiaEnumSymbolsByAddr : IUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaEnumSymbolsByAddran.
Methode |
Beschreibung |
---|---|
Positioniert den Enumerator durch das Ausführen einer Suche in Abschnitt und Offset. |
|
Positioniert den Enumerator durch das Ausführen einer Suche in relative virtuelle Adresse (RVA). |
|
Positioniert den Enumerator durch das Ausführen einer Suche in virtuelle Adresse (VA). |
|
Ruft die folgenden Symbole in der Reihenfolge Adresse ab.Aktualisiert die Anzahl der abgerufenen Elemente durch Position des Enumerators. |
|
Ruft die vorherige Symbole in der Reihenfolge Adresse ab.Aktualisiert die Anzahl der abgerufenen Elemente durch Position des Enumerators. |
|
Erstellt eine Kopie eines Objekts. |
Hinweise
Diese Schnittstelle stellt die Adresse von Symbolen, die gruppiert werden.Um mit den Symbolen, die nach Typ gruppiert sind, beispielsweise SymTagUDT (benutzerdefinierter Typ) oder SymTagBaseClass, verwenden Sie die IDiaEnumSymbols-Schnittstelle.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie die IDiaSession::getSymbolsByAddr-Methode aufruft.
Beispiel
Diese Funktion wird das Name und Adresse aller Symbole angezeigt, die durch relative virtuelle Adresse zugeordnet sind.
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 );
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll