Share via


IDebugProgramProvider2

Esta interfaz registrada permite al administrador de depuración de sesión (SDM) obtener información sobre los programas que se han "publicado" a través de la interfaz IDebugProgramPublisher2 .

Sintaxis

IDebugProgramProvider2 : IUnknown

Notas para los implementadores

El motor de depuración (DE) implementa esta interfaz para proporcionar información sobre los programas que se depuran. Esta interfaz se registra en la sección DE del Registro mediante la métrica metricProgramProvider, tal y como se describe en asistentes del SDK para la depuración.

Notas para autores de la llamada

Llame a la función com CoCreateInstance con el CLSID del proveedor del programa que se obtiene del Registro. Vea el ejemplo.

Métodos en orden de tabla virtual

Método Descripción
GetProviderProcessData Obtiene información sobre los programas que se ejecutan, filtrados de varias maneras.
GetProviderProgramNode Obtiene un nodo de programa, dado un identificador de proceso específico.
WatchForProviderEvents Establece una devolución de llamada para inspeccionar los eventos del proveedor asociados a tipos específicos de procesos.
SetLocale Establece una configuración regional para cualquier recurso específico del idioma que necesite el DE.

Comentarios

Normalmente, un proceso usa esta interfaz para averiguar los programas que se ejecutan en ese proceso.

Requisitos

Encabezado: msdbg.h

Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop

Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll

Ejemplo

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

Consulte también