IDebugProgramPublisher2
Ten interfejs umożliwia aparatowi debugowania (DE) lub niestandardowym dostawcom portów rejestrowanie programów na potrzeby debugowania.
Składnia
IDebugProgramPublisher2 : IUnknown
Uwagi dotyczące implementacji
Program Visual Studio implementuje ten interfejs w celu rejestrowania debugowanych programów w celu uwidoczniania ich do debugowania w wielu procesach.
Uwagi dotyczące wywoływania
Wywołaj funkcję COM CoCreateInstance
za pomocą CLSID_ProgramPublisher
polecenia , aby uzyskać ten interfejs (zobacz przykład). De lub niestandardowy dostawca portów używa tego interfejsu do rejestrowania węzłów programu reprezentujących debugowane programy.
Metody w kolejności Vtable
Ten interfejs implementuje następujące metody:
Metoda | opis |
---|---|
PublishProgramNode | Udostępnia węzeł programu dla kontrolerów danych i menedżera debugowania sesji (SDM). |
UnpublishProgramNode | Usuwa węzeł programu, aby nie był już dostępny. |
PublishProgram | Udostępnia program DE i SDM. |
UnpublishProgram | Usuwa program, aby nie był już dostępny. |
SetDebuggerPresent | Ustawia flagę wskazującą, że debuger jest obecny. |
Uwagi
Ten interfejs udostępnia programy i węzły programu (czyli "publikuje" je) do użycia przez kontrolery domeny i menedżera debugowania sesji (SDM). Aby uzyskać dostęp do opublikowanych programów i węzłów programu, użyj interfejsu IDebugProgramProvider2 . Jest to jedyny sposób, w jaki program Visual Studio może rozpoznać, że program jest debugowany.
Wymagania
Nagłówek: msdbg.h
Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop
Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll
Przykład
W tym przykładzie pokazano, jak utworzyć wystąpienie wydawcy programu i zarejestrować węzeł programu. Jest to pobierane z samouczka publikowania węzła programu.
// 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");
}