IDebugProgramPublisher2

Diese Schnittstelle ermöglicht es einem Debugmodul (DE) oder benutzerdefinierten Portanbietern, Programme für das Debuggen zu registrieren.

Syntax

IDebugProgramPublisher2 : IUnknown

Hinweise für Implementierer

Visual Studio implementiert diese Schnittstelle zum Registrieren von Programmen, die gedebuggt werden, um sie für das Debuggen über mehrere Prozesse hinweg sichtbar zu machen.

Hinweise für Aufrufer

Rufen Sie die COM-Funktion CoCreateInstance auf CLSID_ProgramPublisher , um diese Schnittstelle abzurufen (siehe Beispiel). Ein DE- oder ein benutzerdefinierter Portanbieter verwendet diese Schnittstelle, um Programmknoten zu registrieren, die Programme darstellen, die gedebuggt werden.

Methoden in Vtable-Reihenfolge

Diese Schnittstelle implementiert die folgenden Methoden:

Methode Beschreibung
PublishProgramNode Stellt einen Programmknoten für DEs und den Sitzungsdebug-Manager (SDM) zur Verfügung.
UnpublishProgramNode Entfernt einen Programmknoten, sodass er nicht mehr verfügbar ist.
PublishProgram Stellt ein Programm für DEs und sdM zur Verfügung.
UnpublishProgram Entfernt ein Programm, sodass es nicht mehr verfügbar ist.
SetDebuggerPresent Legt ein Kennzeichen fest, das angibt, dass ein Debugger vorhanden ist.

Hinweise

Diese Schnittstelle stellt Programme und Programmknoten zur Verfügung (d. a. veröffentlicht sie) für die Verwendung durch DEs und den Sitzungsdebug-Manager (SDM). Verwenden Sie die IDebugProgramProvider2-Schnittstelle , um auf veröffentlichte Programme und Programmknoten zuzugreifen. Dies ist die einzige Möglichkeit, wie Visual Studio erkennen kann, dass ein Programm gedebuggt wird.

Anforderungen

Header: msdbg.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Beispiel

Dieses Beispiel zeigt, wie Der Programmherausgeber instanziieren und einen Programmknoten registrieren kann. Dies stammt aus dem Lernprogramm, dem Veröffentlichen des Programmknotens.

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

Siehe auch