IDebugProgramPublisher2
Essa interface permite que um mecanismo de depuração (DE) ou fornecedores de portas personalizadas registrem programas para depuração.
Sintaxe
IDebugProgramPublisher2 : IUnknown
Notas para implementadores
O Visual Studio implementa essa interface para registrar programas que estão sendo depurados para torná-los visíveis para depuração em vários processos.
Observações para chamadores
Chame a função COM CoCreateInstance
com CLSID_ProgramPublisher
para obter essa interface (consulte o Exemplo). Um DE ou um fornecedor de porta personalizado usa essa interface para registrar nós de programa que representam programas que estão sendo depurados.
Métodos em ordem Vtable
Essa interface implementa os seguintes métodos:
Método | Descrição |
---|---|
PublishProgramNode | Disponibiliza um nó de programa para DEs e o gerenciador de depuração de sessão (SDM). |
UnpublishProgramNode | Remove um nó de programa para que ele não esteja mais disponível. |
PublishProgram | Disponibiliza um programa para DEs e SDM. |
UnpublishProgram | Remove um programa para que ele não esteja mais disponível. |
SetDebuggerPresent | Define um sinalizador indicando que um depurador está presente. |
Comentários
Essa interface disponibiliza programas e nós de programa (ou seja, os "publica") para uso por DEs e pelo gerenciador de depuração de sessão (SDM). Para acessar programas publicados e nós de programa, use a interface IDebugProgramProvider2 . Essa é a única maneira que o Visual Studio pode reconhecer que um programa está sendo depurado.
Requisitos
Cabeçalho: msdbg.h
Espaço para nome: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Exemplo
Este exemplo mostra como instanciar o editor do programa e registrar um nó do programa. Isso é retirado do Tutorial, Publicando o nó do programa.
// This is how m_srpProgramPublisher is defined in the class definition:
// CComPtr<IDebugProgramPublisher2> m_srpProgramPublisher.
void CProgram::Start(IDebugEngine2 * pEngine)
{
m_spEngine = pEngine;
HRESULT hr = m_srpProgramPublisher.CoCreateInstance(CLSID_ProgramPublisher);
if ( FAILED(hr) )
{
ATLTRACE("Failed to create the program publisher: 0x%x.", hr);
return;
}
// Register ourselves with the program publisher. Note that
// CProgram implements the IDebgProgramNode2 interface, hence
// the static cast on "this".
hr = m_srpProgramPublisher->PublishProgramNode(
static_cast<IDebugProgramNode2*>(this));
if ( FAILED(hr) )
{
ATLTRACE("Failed to publish the program node: 0x%x.", hr);
m_srpProgramPublisher.Release();
return;
}
ATLTRACE("Added program node.\n");
}