端口供应商的作用是跟踪和提供端口,进而管理流程。 当需要创建端口时,通过 CoCreate 使用端口供应商的 GUID 来实例化端口供应商(SDM 会使用用户选择的端口供应商或项目系统指定的端口供应商)。 然后,SDM 调用 CanAddPort,以查看是否可以添加任何端口。 如果可以添加端口,则通过调用 AddPort 并向其传递描述端口的 IDebugPortRequest2 来请求新端口。
AddPort 返回由 IDebugPort2 接口表示的新端口。
讨论
端口由与计算机或调试服务器关联的端口供应商创建。 服务器通过 EnumPortSuppliers 方法枚举其端口供应商,端口供应商通过 EnumPorts 方法枚举其端口。
除了典型的 COM 注册之外,端口供应商还必须通过将 CLSID 和名称放置在特定的注册表位置来向 Visual Studio 注册自身。 名为 SetMetric 的调试 SDK 帮助程序函数处理此工作:它针对要注册的每个项调用一次,因此:
SetMetric(metrictypePortSupplier,
metricCLSID,
false,
NULL)
SetMetric(metrictypePortSupplier,
metricName,
false,
NULL);
端口提供程序通过对已注册的每个项目调用一次 RemoveMetric(另一个调试 SDK 帮助程序函数)来完成注销操作,因此:
RemoveMetric(metrictypePortSupplier,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
metricName,
NULL);
注释 / 备注
用于调试 SDK 帮助程序是在 dbgmetric.h SetMetric 中定义的静态函数,编译为 RemoveMetric。
metrictypePortSupplier、metricCLSID和 metricName 帮助程序也在 dbgmetric.h中定义。
端口供应商可以通过分别 GetPortSupplierName 和 GetPortSupplierId的方法提供其名称和 GUID。
相关内容
实现端口提供程序
SDK 调试辅助工具
端口提供程序