Поделиться через


IDebugProgramPublisher2

Этот интерфейс позволяет обработчику отладки (DE) или пользовательским поставщикам портов регистрировать программы для отладки.

Синтаксис

IDebugProgramPublisher2 : IUnknown

Примечания для разработчиков

Visual Studio реализует этот интерфейс для регистрации отлаживаемых программ, чтобы сделать их видимыми для отладки в нескольких процессах.

Заметки для вызывающих абонентов

Вызов функции COM CoCreateInstance для CLSID_ProgramPublisher получения этого интерфейса (см. пример). Поставщик пользовательских портов использует этот интерфейс для регистрации узлов программы, представляющих отлаживаемые программы.

Методы в порядке Vtable

Этот интерфейс реализует следующие методы:

Метод Description
PublishProgramNode Делает узел программы доступным для DEs и диспетчера отладки сеансов (SDM).
UnpublishProgramNode Удаляет узел программы, чтобы он больше не был доступен.
PublishProgram Делает программу доступной для DEs и SDM.
UnpublishProgram Удаляет программу, чтобы она больше не была доступна.
SetDebuggerPresent Задает флаг, указывающий, что отладчик присутствует.

Замечания

Этот интерфейс делает программы и узлы программ доступными (т. е. "публикует" их) для использования DEs и диспетчером отладки сеансов (SDM). Для доступа к опубликованным программам и узлам программ используйте интерфейс IDebugProgramProvider2 . Это единственный способ, который Visual Studio может распознать, что программа выполняется отладка.

Requirements

Заголовок: 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");
}

См. также