Freigeben über


IDiaSessionEx

Stellt einen erweiterten Abfragekontext für Debugsymbole bereit.

Syntax

IDiaSessionEx : IDiaSession

Methodik

In der folgenden Tabelle sind die Methoden von IDiaSessionExaufgeführt.

Methode Beschreibung
IDiaSessionEx::isFastLinkPDB Ruft einen Booleschen Wert ab, der angibt, dass die Quelldebuginformationen mit /DEBUG:fastlinkerstellt wurden.
IDiaSessionEx::isPortablePDB Ruft einen booleschen Wert ab, der angibt, dass die Quelldebuginformationen das Portable PDB-Formatverwendet.
"IDiaSessionEx::getSourceLinkInfo" Ruft eine Aufzählung von Quelllinkinformationen ab.

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 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 gedebuggt wird. Sie können beispielsweise die Win32-Funktion GetModuleInformation aufrufen, um die Ladeadresse für die ausführbare Datei abzurufen, wenn ein Handle für die ausführbare Datei angegeben ist.

Da IDiaSessionEx von IDiaSessionerbt, weist es alle gleichen Methoden auf und kann an jede Funktion übergeben werden, die eine IDiaSessionakzeptiert.

Beispiel

In diesem Beispiel wird gezeigt, wie Sie die IDiaSessionEx Schnittstelle als Teil einer allgemeinen Initialisierung des DEBUG Interface Access (DIA) SDK abrufen.

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSessionEx> psessionex;

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 msdia140.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" );
        }
    }

    ComPtr<IDiaSession> psession;
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }

    if ( FAILED( psession.QueryInterface(&psessionex) ) )
    {
        Fatal( "Failed to upgrade from IDiaSession to IDiaSessionEx, are you using an older version of msdia140.dll?" );
    }
}

Anforderungen

Kopfzeile: Dia2.h

Bibliothek: diaguids.lib

DLL: msdia140.dll

Siehe auch