共用方式為


IDebugProgramPublisher2

這個介面允許偵錯引擎 (DE) 或自訂的通訊埠供應商註冊偵錯的程式。

IDebugProgramPublisher2 : IUnknown

實作器注意事項

Visual Studio 會實作這個介面來註冊以使其可見的偵錯多個處理序偵錯的程式。

呼叫者的備忘稿

呼叫 COM 的CoCreateInstance函式與CLSID_ProgramPublisher以取得此介面 (請參閱範例)。 將 DE 或自訂的連接埠提供者使用這個介面,來登錄程式節點代表偵錯的程式。

方法 Vtable 順序

這個介面會實作下列方法:

方法

描述

IDebugProgramPublisher2::PublishProgramNode

讓程式節點使用 DEs 及工作階段偵錯管理員 (SDM)。

IDebugProgramPublisher2::UnpublishProgramNode

使其不再可用,請移除程式] 節點。

IDebugProgramPublisher2::PublishProgram

讓程式可以使用 DEs 及 SDM。

IDebugProgramPublisher2::UnpublishProgram

移除程式,因此就不會再使用。

IDebugProgramPublisher2::SetDebuggerPresent

設定旗標,表示偵錯工具已存在。

備註

這個介面讓程式及程式的節點 (也就是 「 發行 」) 使用 DEs 」 和 「 工作階段偵錯管理員 」 (SDM)。 若要存取已發行的程式和程式的節點,請使用IDebugProgramProvider2介面。 這是 Visual Studio 的可辨識的程式正在偵錯的唯一方法。

需求

標頭: msdbg.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

組件: Microsoft.VisualStudio.Debugger.Interop.dll

範例

本範例將示範如何具現化程式發行者,並登錄程式] 節點。 這取自教學課程中, Publishing the Program Node

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

請參閱

參考

IDebugProgramProvider2

概念

核心介面