Sdílet prostřednictvím


IDiaSessionEx

Poskytuje rozšířený kontext dotazu pro symboly ladění.

Syntax

IDiaSessionEx : IDiaSession

Metody

Následující tabulka ukazuje metody IDiaSessionEx.

Metoda Popis
IDiaSessionEx::isFastLinkPDB Načte logickou hodnotu označující, že zdrojové ladicí informace byly vytvořeny pomocí /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Načte logickou hodnotu označující, že informace o ladění zdroje používají formát Portable PDB.
IDiaSessionEx::getSourceLinkInfo Načte výčet informací o zdrojovém propojení.

Poznámky

Po vytvoření objektu IDiaSession je důležité volat metodu IDiaSession::put_loadAddress a hodnota předaná metodě put_loadAddress musí být nenulová, aby byly přístupné všechny vlastnosti virtuální adresy (VA). Načítá adresa pochází z libovolného programu načteného spustitelného souboru, který je laděný. Můžete například volat funkci Win32 GetModuleInformation načtení adresy pro načtení spustitelného souboru, a to z důvodu popisovače spustitelného souboru.

Protože IDiaSessionEx dědí z IDiaSession, má alos všechny stejné metody a lze jej předat jakékoli funkci, která přijímá IDiaSession.

Příklad

Tento příklad ukazuje, jak získat rozhraní IDiaSessionEx jako součást obecné inicializace sady SDK pro přístup k rozhraní ladění (DIA).

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

Požadavky

Hlavička: Dia2.h

Knihovna: diaguids.lib

DLL: msdia140.dll

Viz také