ポート サプライヤーの役割は、ポートを追跡して供給し、プロセスを管理することです。 ポートを作成する必要がある場合、ポート サプライヤーは、ポート サプライヤーの GUID と共に CoCreate を使用してインスタンス化されます (セッション デバッグ マネージャー [SDM] は、ユーザーが選択したポート サプライヤーまたはプロジェクト システムで指定されたポート サプライヤーを使用します)。 その後、SDM CanAddPort を呼び出して、ポートを追加できるかどうかを確認します。 ポートを追加できる場合は、AddPort 呼び出し、そのポートを説明する IDebugPortRequest2 を渡すことによって、新しいポートが要求されます。 AddPort
は、IDebugPort2 インターフェイスによって表される新しいポートを返します。
議論
ポートは、マシンまたはデバッグ サーバーに関連付けられているポート サプライヤーによって作成されます。 サーバーは、EnumPortSuppliers メソッドを使用してそのポート サプライヤーを列挙し、ポート サプライヤーは、EnumPorts メソッドを介してそのポートを列挙します。
一般的な COM 登録に加えて、ポート サプライヤーは、CLSID と名前を特定のレジストリの場所に配置することによって、Visual Studio に自身を登録する必要があります。 SetMetric
呼び出されたデバッグ SDK ヘルパー関数は、この雑用を処理します。これは、登録する項目ごとに 1 回呼び出されるためです。
SetMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
<CLSID of your port supplier>,
false,
NULL)
SetMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
<name of your port supplier>,
false,
NULL);
ポート サプライヤーは、登録された項目ごとに RemoveMetric
(別のデバッグ SDK ヘルパー関数) を 1 回呼び出すことによって登録を解除します。したがって、次のようになります。
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
NULL);
手記
SetMetric
と RemoveMetric
をデバッグするためのSDK ヘルパーは、dbgmetric.h で定義され、ad2de.libにコンパイルされる静的関数です。 metrictypePortSupplier
、metricCLSID
、および metricName
ヘルパーも、dbgmetric.hで定義されます。
ポート サプライヤーは、GetPortSupplierName メソッドと GetPortSupplierId メソッドを通じて、その名前と GUID を指定できます。
関連コンテンツ
- ポート サプライヤー を実装する
- デバッグ用の SDK ヘルパー
- ポートサプライヤー