Sdílet prostřednictvím


IDiaSessionEx

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

Syntaxe

IDiaSessionEx : IDiaSession

Metody

Následující tabulka ukazuje metody IDiaSessionEx.

metoda Popis
IDiaSessionEx::isFastLinkPDB Načte logickou hodnotu označující, že byly vytvořeny informace o ladění zdroje s /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

Je důležité volat metodu IDiaSession::put_loadAddress po vytvoření objektu IDiaSession a hodnota předaná put_loadAddress metodě musí být nenulová, aby všechny vlastnosti virtuální adresy (VA) symbolů byly přístupné. 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 GetModuleInformation Win32, která načte adresu načtení spustitelného souboru vzhledem ke popisovači spustitelného souboru.

Vzhledem k tomu IDiaSessionEx , že dědí z IDiaSession, alos má 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 IDiaSessionEx rozhraní 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é