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