Compartilhar via


IDebugProgramProvider2

Essa interface registrada permite que o gerenciador de depuração de sessão (SDM) obtenha informações sobre programas que foram "publicados" por meio da interface IDebugProgramPublisher2 .

Sintaxe

IDebugProgramProvider2 : IUnknown

Notas para implementadores

O mecanismo de depuração (DE) implementa essa interface para fornecer informações sobre programas que estão sendo depurados. Essa interface é registrada na seção DE do Registro usando a métrica metricProgramProvider, conforme descrito em SDK Helpers for Debugging.

Observações para chamadores

Chame a função COM CoCreateInstance com a CLSID do provedor de programa que é obtida do registro. Veja o exemplo.

Métodos em ordem Vtable

Método Descrição
GetProviderProcessData Obtém informações sobre programas em execução, filtradas de várias maneiras.
GetProviderProgramNode Obtém um nó de programa, dado um ID de processo específico.
WatchForProviderEvents Estabelece um retorno de chamada para observar eventos do provedor associados a tipos específicos de processos.
SetLocale Estabelece uma localidade para quaisquer recursos específicos de idioma necessários para o DE.

Comentários

Normalmente, um processo usa essa interface para descobrir sobre os programas em execução nesse processo.

Requisitos

Cabeçalho: msdbg.h

Espaço para nome: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Exemplo

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

Confira também