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