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