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

Consulte también