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 metricProgramProviderregistriert, 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);
}

Siehe auch