次の方法で共有


IDebugProgramProvider2

この登録済みインターフェイスにより、セッション デバッグ マネージャー (SDM) で、IDebugProgramPublisher2 インターフェイスを通じて "公開" されたプログラムに関する情報を取得できます。

構文

IDebugProgramProvider2 : IUnknown

実装側の注意

デバッグ エンジン (DE) では、デバッグ中のプログラムに関する情報を提供するために、このインターフェイスを実装します。 このインターフェイスは、「デバッグ用の SDK ヘルパー」で説明されているように、メトリック metricProgramProvider を使用してレジストリの DE セクションに登録されます。

呼び出し元に関する注意事項

レジストリから取得した、プログラム プロバイダーの CLSID を指定して COM の CoCreateInstance 関数を呼び出します。 「例」を参照してください。

Vtable 順序のメソッド

メソッド 説明
GetProviderProcessData 実行中のプログラムに関する情報を、さまざまな方法でフィルター処理して取得します。
GetProviderProgramNode 特定のプロセス ID を指定してプログラム ノードを取得します。
WatchForProviderEvents 特定の種類のプロセスに関連付けられたプロバイダー イベントを監視するためのコールバックを設定します。
SetLocale DE で必要とされる言語固有リソースのロケールを設定します。

解説

通常、プロセスではこのインターフェイスを使用して、そのプロセスで実行されているプログラムに関する情報を確認します。

要件

ヘッダー: msdbg.h

名前空間: Microsoft.VisualStudio.Debugger.Interop

アセンブリ: Microsoft.VisualStudio.Debugger.Interop.dll

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

関連項目