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