次の方法で共有


IDebugProgramPublisher2

このインターフェイスによって、デバッグ エンジン (DE) またはカスタム ポート サプライヤーでデバッグ用のプログラムを登録できます。

構文

IDebugProgramPublisher2 : IUnknown

実装側の注意

Visual Studio では、デバッグ中のプログラムを登録して、複数のプロセスからデバッグ目的で参照できるようにするために、このインターフェイスを実装します。

呼び出し元に関する注意事項

このインターフェイスを取得するには、CLSID_ProgramPublisher を指定して COM の CoCreateInstance 関数を呼び出します (例を参照)。 DE またはカスタム ポート サプライヤーでは、このインターフェイスを使用して、デバッグ中のプログラムを表すプログラム ノードを登録します。

Vtable 順序のメソッド

このインターフェイスには、次のメソッドが実装されています。

メソッド 説明
PublishProgramNode プログラム ノードを DE およびセッション デバッグ マネージャー (SDM) で使用可能にします。
UnpublishProgramNode プログラム ノードを削除して使用不可にします。
PublishProgram プログラムを DE および SDM で使用可能にします。
UnpublishProgram プログラムを削除して使用不可にします。
SetDebuggerPresent デバッガーの存在を示すフラグを設定します。

解説

このインターフェイスは、プログラムおよびプログラム ノードを DE やセッション デバッグ マネージャー (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");
}

関連項目