IDiaEnumSymbolsByAddr

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

Weitere Informationen