IDebugProgramProvider2
Questa interfaccia registrata consente al gestore di debug di sessione (SDM) di ottenere informazioni sui programmi che sono stati "pubblicati" tramite l'interfaccia IDebugProgramPublisher2 .
Sintassi
IDebugProgramProvider2 : IUnknown
Note per gli implementatori
Il motore di debug implementa questa interfaccia per fornire informazioni sui programmi sottoposti a debug. Questa interfaccia viene registrata nella sezione DE del Registro di sistema usando la metrica metricProgramProvider
, come descritto in Sdk Helpers for Debugging .
Note per i chiamanti
Chiamare la CoCreateInstance
funzione COM con il CLSID
del provider di programmi ottenuto dal Registro di sistema. Vedere l'esempio.
Metodi nell'ordine della tabella Vtable
metodo | Descrizione |
---|---|
GetProviderProcessData | Ottiene informazioni sui programmi in esecuzione, filtrati in diversi modi. |
GetProviderProgramNode | Ottiene un nodo del programma, dato un ID processo specifico. |
WatchForProviderEvents | Stabilisce un callback per controllare gli eventi del provider associati a tipi specifici di processi. |
SetLocale | Stabilisce le impostazioni locali per tutte le risorse specifiche della lingua necessarie per la de. |
Osservazioni:
In genere, un processo usa questa interfaccia per scoprire i programmi in esecuzione in tale processo.
Requisiti
Intestazione: msdbg.h
Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Esempio
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);
}