Freigeben über


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

IDiaEnumSymbolsByAddr::symbolByAddr

Positioniert den Enumerator durch das Ausführen einer Suche in Abschnitt und Offset.

IDiaEnumSymbolsByAddr::symbolByRVA

Positioniert den Enumerator durch das Ausführen einer Suche in relative virtuelle Adresse (RVA).

IDiaEnumSymbolsByAddr::symbolByVA

Positioniert den Enumerator durch das Ausführen einer Suche in virtuelle Adresse (VA).

IDiaEnumSymbolsByAddr::Next

Ruft die folgenden Symbole in der Reihenfolge Adresse ab.Aktualisiert die Anzahl der abgerufenen Elemente durch Position des Enumerators.

IDiaEnumSymbolsByAddr::Prev

Ruft die vorherige Symbole in der Reihenfolge Adresse ab.Aktualisiert die Anzahl der abgerufenen Elemente durch Position des Enumerators.

IDiaEnumSymbolsByAddr::Clone

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

Siehe auch

Referenz

IDiaSession::getSymbolsByAddr

IDiaEnumSymbols

Weitere Ressourcen

Schnittstellen (Debug Interface Access SDK)