IDebugProgramProvider2
Diese registrierte Schnittstelle ermöglicht es dem Sitzungsdebug-Manager (SDM), Informationen zu Programmen abzurufen, die über die IDebugProgramPublisher2-Schnittstelle "veröffentlicht" wurden.
Syntax
IDebugProgramProvider2 : IUnknown
Hinweise für Implementierer
Das Debugmodul (DE) implementiert diese Schnittstelle, um Informationen über zu debuggierten Programmen bereitzustellen. Diese Schnittstelle wird im DE-Abschnitt der Registrierung mithilfe der Metrik metricProgramProvider
registriert, wie in SDK-Hilfsprogramme für das Debuggen beschrieben.
Hinweise für Aufrufer
Rufen Sie die COM-Funktion CoCreateInstance
mit dem CLSID
Programmanbieter auf, der aus der Registrierung abgerufen wird. Sehen Sie sich das Beispiel an.
Methoden in Vtable-Reihenfolge
Methode | Beschreibung |
---|---|
GetProviderProcessData | Ruft Informationen über ausgeführte Programme ab, gefiltert auf unterschiedliche Weise. |
GetProviderProgramNode | Ruft einen Programmknoten mit einer bestimmten Prozess-ID ab. |
WatchForProviderEvents | Richtet einen Rückruf ein, um auf Anbieterereignisse zu achten, die bestimmten Arten von Prozessen zugeordnet sind. |
SetLocale | Richtet ein Gebietsschema für alle sprachspezifischen Ressourcen ein, die von der DE benötigt werden. |
Hinweise
Normalerweise verwendet ein Prozess diese Schnittstelle, um herauszufinden, welche Programme in diesem Prozess ausgeführt werden.
Anforderungen
Header: msdbg.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Beispiel
IDebugProgramProvider2 *GetProgramProvider(GUID *pDebugEngineGuid)
{
// This is typically defined globally. For this example, it is
// defined here.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugProgramProvider2 *pProvider = NULL;
if (pDebugEngineGuid != NULL) {
CLSID clsidProvider = { 0 };
::GetMetric(NULL,
metrictypeEngine,
*pDebugEngineGuid,
metricProgramProvider,
&clsidProvider,
strRegistrationRoot);
if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
CComPtr<IDebugProgramProvider2> spProgramProvider;
spProgramProvider.CoCreateInstance(clsidProvider);
if (spProgramProvider != NULL) {
pProvider = spProgramProvider.Detach();
}
}
}
return(pProvider);
}