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