Condividi tramite


IDiaSessionEx

Fornisce un contesto di query esteso per i simboli di debug.

Sintassi

IDiaSessionEx : IDiaSession

Metodi

Nella tabella seguente vengono illustrati i metodi di IDiaSessionEx.

metodo Descrizione
IDiaSessionEx::isFastLinkPDB Recupera un valore Boolean che indica che le informazioni di debug di origine sono state generate con /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Recupera un valore Boolean che indica che le informazioni di debug di origine usano il formato PDB portabile.
'IDiaSessionEx::getSourceLinkInfo' Recupera un'enumerazione delle informazioni sul collegamento di origine.

Osservazioni:

È importante chiamare il IDiaSession::put_loadAddress metodo dopo la creazione dell'oggetto IDiaSession e il valore passato al put_loadAddress metodo deve essere diverso da zero, perché le proprietà degli indirizzi virtuali (VA) dei simboli siano accessibili. L'indirizzo di caricamento proviene da qualsiasi programma caricato il file eseguibile sottoposto a debug. Ad esempio, è possibile chiamare la funzione GetModuleInformation Win32 per recuperare l'indirizzo di caricamento per l'eseguibile, dato un handle al file eseguibile.

Poiché IDiaSessionEx eredita da IDiaSession, alos ha tutti gli stessi metodi e può essere passato a qualsiasi funzione che accetta un oggetto IDiaSession.

Esempio

Questo esempio illustra come ottenere l'interfaccia IDiaSessionEx come parte di un'inizializzazione generale dell'SDK DIA (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?" );
    }
}

Requisiti

Intestazione: Dia2.h

Libreria: diaguids.lib

DLL: msdia140.dll

Vedi anche