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