Udostępnij za pośrednictwem


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

Zobacz też