IDebugProgramPublisher2
Esta interfaz permite que un motor de depuración (DE) o proveedores de puertos personalizados registren programas para la depuración.
Sintaxis
IDebugProgramPublisher2 : IUnknown
Notas para los implementadores
Visual Studio implementa esta interfaz para registrar programas que se depuran para que sean visibles para la depuración en varios procesos.
Notas para autores de la llamada
Llame a la función com CoCreateInstance
con CLSID_ProgramPublisher
para obtener esta interfaz (vea el ejemplo). Un proveedor de puertos personalizado o DE usa esta interfaz para registrar nodos de programa que representan programas que se depuran.
Métodos en orden de tabla virtual
Esta interfaz implementa los métodos siguientes:
Method | Descripción |
---|---|
PublishProgramNode | Hace que un nodo de programa esté disponible para los IDE y el administrador de depuración de sesión (SDM). |
UnpublishProgramNode | Quita un nodo de programa para que ya no esté disponible. |
PublishProgram | Hace que un programa esté disponible para los DE y el SDM. |
UnpublishProgram | Quita un programa para que ya no esté disponible. |
SetDebuggerPresent | Establece una marca que indica que hay un depurador presente. |
Comentarios
Esta interfaz hace que los programas y los nodos de programa estén disponibles (es decir, "publicarlos") para que los usen los DE y el administrador de depuración de sesión (SDM). Para acceder a los programas publicados y los nodos de programa, use la interfaz IDebugProgramProvider2 . Esta es la única manera en que Visual Studio puede reconocer que se está depurando un programa.
Requisitos
Encabezado: msdbg.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll
Ejemplo
En este ejemplo se muestra cómo crear instancias del publicador del programa y registrar un nodo de programa. Esto se toma del Tutorial, Publicación del nodo de 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");
}