Share via


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

另請參閱