Delen via


IDiaSessionEx

Biedt een uitgebreide querycontext voor foutopsporingssymbolen.

Syntaxis

IDiaSessionEx : IDiaSession

Methoden

In de volgende tabel ziet u de methoden van IDiaSessionEx.

Methode Beschrijving
IDiaSessionEx::isFastLinkPDB Hiermee wordt een Booleaanse waarde opgehaald die aangeeft dat de brondebug-informatie is geproduceerd met /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Hiermee wordt een Booleaanse waarde opgehaald die aangeeft dat de brondebug-informatie gebruikmaakt van de Portable PDB-indeling.
'IDiaSessionEx::getSourceLinkInfo' Haalt een opsomming van bronkoppelingsgegevens op.

Opmerkingen

Het is belangrijk om de methode IDiaSession::put_loadAddress aan te roepen nadat u het IDiaSession-object hebt gemaakt, en de waarde die aan de methode put_loadAddress is doorgegeven, moet niet nul zijn, zodat alle eigenschappen van virtuele adressen (VA) van symbolen toegankelijk zijn. Het laadadres is afkomstig van het programma dat het uitvoerbare bestand heeft geladen dat wordt opgespoord. U kunt bijvoorbeeld de Win32-functie aanroepen GetModuleInformation om het laadadres voor het uitvoerbare bestand op te halen, met een ingang naar het uitvoerbare bestand.

Omdat IDiaSessionEx overneemt van IDiaSession, heeft het alos dezelfde methoden en kan deze worden doorgegeven aan elke functie die een IDiaSessionaccepteert.

Voorbeeld

In dit voorbeeld ziet u hoe u de IDiaSessionEx-interface kunt verkrijgen als onderdeel van een algemene initialisatie van de DIA-SDK (Debug Interface Access).

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

Eisen

Koptekst: Dia2.h

Bibliotheek: diaguids.lib

DLL: msdia140.dll

Zie ook