Udostępnij za pośrednictwem


IDiaSessionEx

Udostępnia rozszerzony kontekst zapytania dla symboli debugowania.

Składnia

IDiaSessionEx : IDiaSession

Metody

W poniższej tabeli przedstawiono metody .IDiaSessionEx

Metoda opis
IDiaSessionEx::isFastLinkPDB Pobiera wartość logiczną wskazującą, że informacje o debugowaniu źródłowym zostały wygenerowane za pomocą polecenia /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Pobiera wartość logiczną wskazującą, że informacje o debugowaniu źródłowym korzystają z przenośnego formatu PDB.
"IDiaSessionEx::getSourceLinkInfo" Pobiera wyliczenie informacji o linku źródłowym.

Uwagi

Należy wywołać metodę po utworzeniu IDiaSession::put_loadAddress IDiaSession obiektu — a wartość przekazana do put_loadAddress metody musi być inna niż zero — aby wszystkie właściwości wirtualnego adresu (VA) były dostępne. Adres ładowania pochodzi z dowolnego programu załadowanego pliku wykonywalnego debugowanego. Można na przykład wywołać funkcję GetModuleInformation Win32, aby pobrać adres ładowania pliku wykonywalnego, biorąc pod uwagę uchwyt pliku wykonywalnego.

Ponieważ IDiaSessionEx dziedziczy z IDiaSessionklasy , obiekt alos ma wszystkie te same metody i może zostać przekazany do dowolnej funkcji, która akceptuje IDiaSessionelement .

Przykład

W tym przykładzie pokazano, jak uzyskać IDiaSessionEx interfejs w ramach ogólnej inicjalizacji zestawu SDK dostępu do interfejsu debugowania (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?" );
    }
}

Wymagania

Nagłówek: Dia2.h

Biblioteka: diaguids.lib

BIBLIOTEKA DLL: msdia140.dll

Zobacz też