Bagikan melalui


IDebugProgramProvider2

Antarmuka terdaftar ini memungkinkan manajer debug sesi (SDM) untuk mendapatkan informasi tentang program yang telah "diterbitkan" melalui antarmuka IDebugProgramPublisher2 .

Sintaks

IDebugProgramProvider2 : IUnknown

Catatan untuk Pelaksana

Mesin debug (DE) mengimplementasikan antarmuka ini untuk memberikan informasi tentang program yang sedang di-debug. Antarmuka ini terdaftar di bagian DE registri menggunakan metrik metricProgramProvider, seperti yang dijelaskan dalam Bantuan SDK untuk Debugging.

Catatan untuk Penelepon

Panggil fungsi COM CoCreateInstance dengan CLSID penyedia program yang diperoleh dari registri. Lihat Contoh.

Metode dalam urutan Vtable

Metode Deskripsi
GetProviderProcessData Mendapatkan informasi tentang program yang berjalan, difilter dengan berbagai cara.
GetProviderProgramNode Mendapatkan simpul program, mengingat ID proses tertentu.
WatchForProviderEvents Menetapkan panggilan balik untuk mengawasi peristiwa penyedia yang terkait dengan jenis proses tertentu.
SetLocale Menetapkan lokal untuk sumber daya khusus bahasa apa pun yang diperlukan oleh DE.

Keterangan

Biasanya, proses menggunakan antarmuka ini untuk mencari tahu tentang program yang berjalan dalam proses tersebut.

Persyaratan

Header: msdbg.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Rakitan: Microsoft.VisualStudio.Debugger.Interop.dll

Contoh

IDebugProgramProvider2 *GetProgramProvider(GUID *pDebugEngineGuid)
{
    // This is typically defined globally. For this example, it is
    // defined here.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
    IDebugProgramProvider2 *pProvider = NULL;
    if (pDebugEngineGuid != NULL) {
        CLSID clsidProvider = { 0 };
        ::GetMetric(NULL,
                    metrictypeEngine,
                    *pDebugEngineGuid,
                    metricProgramProvider,
                    &clsidProvider,
                    strRegistrationRoot);
        if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
            CComPtr<IDebugProgramProvider2> spProgramProvider;
            spProgramProvider.CoCreateInstance(clsidProvider);
            if (spProgramProvider != NULL) {
                pProvider = spProgramProvider.Detach();
            }
        }
    }
    return(pProvider);
}

Baca juga