Condividi tramite


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

Vedi anche