IDebugProgramPublisher2
此介面可讓偵錯引擎 (DE) 或自定義埠供應商註冊程式以進行偵錯。
語法
IDebugProgramPublisher2 : IUnknown
實作者的注意事項
Visual Studio 會實作這個介面來註冊正在偵錯的程式,以便讓程式在多個進程之間進行偵錯。
呼叫端注意事項
使用呼叫 COM 的 CoCreateInstance
函式 CLSID_ProgramPublisher
以取得此介面(請參閱範例)。 DE 或自定義埠供應商會使用此介面來註冊代表正在偵錯之程式的程序節點。
以 Vtable 順序排列的方法
這個介面會實作下列方法:
方法 | 描述 |
---|---|
PublishProgramNode | 讓 DES 和工作階段偵錯管理員 (SDM) 能夠使用程式節點。 |
UnpublishProgramNode | 拿掉程序節點,使其不再可供使用。 |
PublishProgram | 讓程式可供 DES 和 SDM 使用。 |
UnpublishProgram | 拿掉程式,使其不再可用。 |
SetDebuggerPresent | 設定旗標,指出調試程式存在。 |
備註
此介面讓程式和程序節點可供使用(也就是「發佈」它們),以供 DES 和會話偵錯管理員使用。 若要存取已發佈的程式和程序節點,請使用 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");
}