Freigeben über


IDiaSession

Stellt einen Abfragekontext für Debugsymbole bereit.

Syntax

IDiaSession : IUnknown

Methoden

In der folgenden Tabelle sind die Methoden von IDiaSession aufgeführt.

Methode BESCHREIBUNG
IDiaSession::get_loadAddress Ruft die Ladeadresse für die ausführbare Datei ab, die den Symbolen in diesem Symbolspeicher entspricht. Dies ist derselbe Wert, der an die put_loadAddress-Methode übergeben wurde.
IDiaSession::put_loadAddress Legt die Ladeadresse für die ausführbare Datei fest, die den Symbolen in diesem Symbolspeicher entspricht. Hinweis: Es ist wichtig, diese Methode aufzurufen, wenn Sie ein IDiaSession-Objekt abrufen und bevor Sie mit der Verwendung des Objekts beginnen.
IDiaSession::get_globalScope Ruft einen Verweis auf den globalen Bereich ab.
IDiaSession::getEnumTables Ruft einen Enumerator für alle Tabellen ab, die im Symbolspeicher enthalten sind.
IDiaSession::getSymbolsByAddr Ruft einen Enumerator für alle benannten Symbole an statischen Speicherorten ab.
IDiaSession::findChildren Ruft alle untergeordneten Elemente eines angegebenen übergeordneten Bezeichners ab, die mit dem Namen und Symboltyp übereinstimmen.
IDiaSession::findSymbolByAddr Ruft einen angegebenen Symboltyp ab, der eine angegebene Adresse enthält oder dieser am nächsten kommt.
IDiaSession::findSymbolByRVA Ruft einen angegebenen Symboltyp ab, der eine angegebene relative virtuelle Adresse (RVA) enthält oder dieser am nächsten kommt.
IDiaSession::findSymbolByVA Ruft einen angegebenen Symboltyp ab, der eine angegebene virtuelle Adresse (VA) enthält oder dieser am nächsten kommt.
IDiaSession::findSymbolByToken Ruft das Symbol ab, das ein angegebenes Metadatentoken enthält.
IDiaSession::symsAreEquiv Überprüft, ob zwei Symbole gleichwertig sind.
IDiaSession::symbolById Ruft ein Symbol anhand seines eindeutigen Bezeichners ab.
IDiaSession::findSymbolByRVAEx Ruft einen angegebenen Symboltyp ab, der eine angegebene relative virtuelle Adresse und einen Offset enthält oder dieser/m am nächsten kommt.
IDiaSession::findSymbolByVAEx Ruft einen angegebenen Symboltyp ab, der eine angegebene virtuelle Adresse und einen Offset enthält oder dieser/m am nächsten kommt.
IDiaSession::findFile Ruft eine Quelldatei anhand der Kompiliereinheit und des Namens ab.
IDiaSession::findFileById Ruft eine Quelldatei anhand des Quelldateibezeichners ab.
IDiaSession::findLines Ruft Zeilennummern innerhalb einer angegebenen Kompiliereinheit und eines Quelldateibezeichners ab.
IDiaSession::findLinesByAddr Ruft die Zeilen in einer angegebenen Kompiliereinheit ab, die eine angegebene Adresse enthalten.
IDiaSession::findLinesByRVA Ruft die Zeilen in einer angegebenen Kompiliereinheit ab, die eine angegebene relative virtuelle Adresse enthalten.
IDiaSession::findLinesByVA Sucht die Zeilennummerninformationen für Zeilen, die in einem angegebenen Adressbereich enthalten sind.
IDiaSession::findLinesByLinenum Ruft die Zeilen in einer angegebenen Kompiliereinheit anhand der Quelldatei und Zeilennummer ab.
IDiaSession::findInjectedSource Ruft eine im Symbolspeicher abgelegte Quelle anhand der Attributanbieter oder anderer Komponenten des Kompilierungsprozesses ab.
IDiaSession::getEnumDebugStreams Ruft eine enumerierte Sequenz von Debugdatenströmen ab.
IDiaSession::findInlineFramesByAddr Ruft eine Enumeration ab, mit der ein Client alle Inline-Frames an einer angegebenen Adresse durchlaufen kann.
IDiaSession::findInlineFramesByRVA Ruft eine Enumeration ab, mit der ein Client alle Inline-Frames an einer angegebenen relativen virtuellen Adresse (RVA) durchlaufen kann.
IDiaSession::findInlineFramesByVA Ruft eine Enumeration ab, mit der ein Client alle Inline-Frames an einer angegebenen virtuellen Adresse durchlaufen kann.
IDiaSession::findInlineeLines Ruft eine Enumeration ab, mit der ein Client die Zeilennummerninformationen aller Funktionen durchlaufen kann, die direkt oder indirekt inline in dem übergeordneten Symbol vorhanden sind.
IDiaSession::findInlineeLinesByAddr Ruft eine Enumeration ab, mit der ein Client die Zeilennummerninformationen aller Funktionen durchlaufen kann, die direkt oder indirekt inline in diesem übergeordneten Symbol und innerhalb des angegebenen Adressbereichs vorhanden sind.
IDiaSession::findInlineeLinesByRVA Ruft eine Enumeration ab, mit der ein Client die Zeilennummerninformationen aller Funktionen durchlaufen kann, die direkt oder indirekt inline in diesem übergeordneten Symbol und innerhalb der angegebenen relativen virtuellen Adresse (RVA) vorhanden sind.
IDiaSession::findInlineeLinesByVA Ruft eine Enumeration ab, mit der ein Client die Zeilennummerninformationen aller Funktionen durchlaufen kann, die direkt oder indirekt inline in diesem übergeordneten Symbol und innerhalb der angegebenen virtuellen Adresse (VA) vorhanden sind.
IDiaSession::findInlineeLinesByLinenum Ruft eine Enumeration ab, mit der ein Client die Zeilennummerninformationen aller Funktionen durchlaufen kann, die direkt oder indirekt inline in der angegebenen Quelldatei und Zeilennummer vorhanden sind.
IDiaSession::findInlineesByName Ruft eine Enumeration ab, die es einem Client ermöglicht, die Zeilennummerninformationen aller Inline-Funktionen zu durchlaufen, die einem angegebenen Namen entsprechen.
IDiaSession::findSymbolsForAcceleratorPointerTag Gibt eine Enumeration von Symbolen für die Variable zurück, der der angegebene Tagwert in der übergeordneten Beschleuniger-Stubfunktion entspricht.
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag Bei einem entsprechenden Tagwert gibt diese Methode eine Enumeration von Symbolen zurück, die in einer angegebenen übergeordneten Beschleuniger-Stubfunktion an einer angegebenen relativen virtuellen Adresse enthalten sind.
IDiaSession::findAcceleratorInlineesByName Gibt eine Enumeration von Symbolen für Inline-Frames zurück, die dem angegebenen Inline-Funktionsnamen entsprechen.
IDiaSession::findAcceleratorInlineesByLinenum Gibt eine Enumeration von Symbolen für Inline-Frames zurück, die dem angegebenen Quellspeicherort entsprechen.

Bemerkungen

Es ist wichtig, die IDiaSession::put_loadAddress-Methode nach dem Erstellen des IDiaSession-Objekts aufzurufen – und der an die put_loadAddress-Methode übergebene Wert muss ungleich 0 (Null) sein, damit auf alle virtuellen Adresseigenschaften (VA) von Symbolen zugegriffen werden kann. Die Ladeadresse stammt aus dem Programm, das die ausführbare Datei geladen hat, die debuggt wird. Beispielsweise können Sie die Win32-Funktion GetModuleInformation aufrufen, um die Ladeadresse für die ausführbare Datei abzurufen, wobei ein Handle für die ausführbare Datei angegeben wird.

Beispiel

In diesem Beispiel wird gezeigt, wie die IDiaSession-Schnittstelle im Rahmen einer allgemeinen Initialisierung des DIA SDK abgerufen wird.

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;

void InitializeDIA(const char *szFilename)
{
    HRESULT hr = CoCreateInstance( CLSID_DiaSource,
                                   NULL,
                                   CLSCTX_INPROC_SERVER,
                                   __uuidof( IDiaDataSource ),
                                  (void **) &pSource);
    if (FAILED(hr))
    {
        Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );
    }
    wchar_t wszFilename[ _MAX_PATH ];
    mbstowcs( wszFilename,
              szFilename,
              sizeof( wszFilename )/sizeof( wszFilename[0] ) );
    if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
    {
        if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
        {
            Fatal( "loadDataFromPdb/Exe" );
        }
    }
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }
}

Requirements (Anforderungen)

Header: Dia2.h

Bibliothek: diaguids.lib

DLL: msdia80.dll

Weitere Informationen