IDebugProgramPublisher2
Questa interfaccia consente a un motore di debug (DE) o ai fornitori di porte personalizzate di registrare programmi per il debug.
Sintassi
IDebugProgramPublisher2 : IUnknown
Note per gli implementatori
Visual Studio implementa questa interfaccia per registrare i programmi sottoposti a debug per renderli visibili per il debug in più processi.
Note per i chiamanti
Chiamare la CoCreateInstance
funzione COM con CLSID_ProgramPublisher
per ottenere questa interfaccia (vedere l'esempio). Un fornitore di porte personalizzato o DE usa questa interfaccia per registrare i nodi del programma che rappresentano i programmi di cui è in corso il debug.
Metodi nell'ordine della tabella Vtable
Questa interfaccia implementa i metodi seguenti:
metodo | Descrizione |
---|---|
PublishProgramNode | Rende disponibile un nodo del programma per le DES e lo strumento di gestione del debug di sessione. |
UnpublishProgramNode | Rimuove un nodo del programma in modo che non sia più disponibile. |
PublishProgram | Rende disponibile un programma per le DES e SDM. |
UnpublishProgram | Rimuove un programma in modo che non sia più disponibile. |
SetDebuggerPresent | Imposta un flag che indica che è presente un debugger. |
Osservazioni:
Questa interfaccia rende disponibili programmi e nodi di programma (ovvero "pubblica") per l'uso da parte di DES e del gestore di debug della sessione (SDM). Per accedere a programmi e nodi di programma pubblicati, usare l'interfaccia IDebugProgramProvider2 . Questo è l'unico modo in cui Visual Studio può riconoscere che è in corso il debug di un programma.
Requisiti
Intestazione: msdbg.h
Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Esempio
In questo esempio viene illustrato come creare un'istanza dell'autore del programma e registrare un nodo programma. Questo è tratto dall'esercitazione, pubblicazione del nodo programma.
// 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");
}