Udostępnij za pośrednictwem


IDebugProgramProvider2

Ten zarejestrowany interfejs umożliwia menedżerowi debugowania sesji (SDM) uzyskiwanie informacji o programach, które zostały "opublikowane" za pośrednictwem interfejsu IDebugProgramPublisher2 .

Składnia

IDebugProgramProvider2 : IUnknown

Uwagi dotyczące implementacji

Aparat debugowania (DE) implementuje ten interfejs, aby dostarczać informacje o debugowanych programach. Ten interfejs jest zarejestrowany w sekcji DE rejestru przy użyciu metryki metricProgramProvider, zgodnie z opisem w pomocnikach zestawu SDK do debugowania.

Uwagi dotyczące wywoływania

Wywołaj funkcję COM CoCreateInstance za pomocą CLSID dostawcy programu uzyskanego z rejestru. Zobacz przykład.

Metody w kolejności Vtable

Metoda opis
GetProviderProcessData Uzyskuje informacje o uruchomionych programach, filtrowanych na różne sposoby.
GetProviderProgramNode Pobiera węzeł programu, biorąc pod uwagę określony identyfikator procesu.
WatchForProviderEvents Ustanawia wywołanie zwrotne do obserwowania zdarzeń dostawcy skojarzonych z określonymi rodzajami procesów.
SetLocale Ustanawia ustawienia regionalne dla wszystkich zasobów specyficznych dla języka wymaganych przez de.

Uwagi

Zwykle proces używa tego interfejsu, aby dowiedzieć się więcej o programach uruchomionych w tym procesie.

Wymagania

Nagłówek: msdbg.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Przykład

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

Zobacz też