Condividi tramite


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

Vedi anche