IDebugProgramPublisher2

此接口允许调试引擎(DE)或自定义端口供应商注册用于调试的程序。

语法

IDebugProgramPublisher2 : IUnknown

实现者须知

Visual Studio 实现此接口来注册正在调试的程序,以便使程序在多个进程中进行调试时可见。

对调用者的说明

调用 COM 的 CoCreateInstance 函数 CLSID_ProgramPublisher 以获取此接口(请参阅示例)。 DE 或自定义端口供应商使用此接口注册表示正在调试的程序的程序节点。

按 Vtable 顺序排列的方法

此接口实现以下方法:

方法 说明
PublishProgramNode 使程序节点可用于 DES 和会话调试管理器(SDM)。
UnpublishProgramNode 删除程序节点,使其不再可用。
PublishProgram 使程序可供 DES 和 SDM 使用。
UnpublishProgram 删除程序,使其不再可用。
SetDebuggerPresent 设置一个标志,指示调试器存在。

注解

此接口使程序和程序节点可用(即“发布”它们)供 DES 和会话调试管理器(SDM)使用。 若要访问已发布的程序和程序节点,请使用 IDebugProgramProvider2 接口。 这是 Visual Studio 能够识别正在调试程序的唯一方法。

要求

标头:msdbg.h

命名空间:Microsoft.VisualStudio.Debugger.Interop

程序集:Microsoft.VisualStudio.Debugger.Interop.dll

示例

此示例演示如何实例化程序发布者并注册程序节点。 这是从教程“ 发布程序节点”中获取的。

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

另请参阅