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