Bagikan melalui


IDiaSessionEx

Menyediakan konteks kueri yang diperluas untuk simbol debug.

Sintaksis

IDiaSessionEx : IDiaSession

Metode

Tabel berikut ini memperlihatkan metode IDiaSessionEx.

Metode Deskripsi
IDiaSessionEx::isFastLinkPDB Mengambil Boolean yang menunjukkan bahwa informasi debug sumber diproduksi dengan /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Mengambil Boolean yang menunjukkan bahwa informasi debug sumber menggunakan format PDB Portabel .
'IDiaSessionEx::getSourceLinkInfo' Mengambil enumerasi informasi tautan sumber.

Komentar

Penting untuk memanggil metode IDiaSession::put_loadAddress setelah membuat objek IDiaSession — dan nilai yang diteruskan ke metode put_loadAddress harus bukan nol - agar properti alamat virtual (VA) simbol apa pun dapat diakses. Alamat beban berasal dari program apa pun yang memuat executable yang sedang di-debug. Misalnya, Anda dapat memanggil fungsi Win32 GetModuleInformation untuk mengambil alamat beban untuk yang dapat dieksekusi, diberikan handel ke yang dapat dieksekusi.

Karena IDiaSessionEx mewarisi dari IDiaSession, alos memiliki semua metode yang sama, dan dapat diteruskan ke fungsi apa pun yang menerima IDiaSession.

Contoh

Contoh ini menunjukkan cara mendapatkan antarmuka IDiaSessionEx sebagai bagian dari inisialisasi umum SDK Akses Antarmuka Debug (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?" );
    }
}

Persyaratan

Header: Dia2.h

Pustaka: diaguids.lib

DLL: msdia140.dll

Lihat juga