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