在DSF COM对象的托管代码中开发DSF测试应用程序有多种方法。对于托管代码与COM对象进行通信,必须将COM类型导入到COM类包装器中。
您可以使用以下任何方法创建COM类包装器:
- 通过类型库导入器自己创建COM类包装器。
类型库导入器(Tlbimp.exe) 将COM类型库(.tlb)文件中找到的类型定义转换为公共语言运行时程序集中的等效定义。Tlbimp.exe的输出是一个二进制文件(称为程序集),其中包含原始类型库中定义的类型的运行时元数据。有关更多信息,请参见类型库导入程序(Type Library Importer)。
当您在非托管COM代码中创建自己的自定义模拟时,您可能必须自己导入这些类型以创建用于测试自定义模拟的托管应用程序。例如,该方法可以生成键盘、音频和通用HID模拟器的包装器。有关更多信息,请参见COM互操作教程( Com Interop Tutorials)。
标准的DSF .tlb文件可在Windows驱动程序包(WDK)中使用。
注意,WDK的当前版本中没有可用的SoftEhchIF.tlb库。必须使用本主题中描述的其他方法之一引用此库。
- 引用预生成的COM类包装器。
这些包装器是通过DSF安装包安装的托管互操作程序集包的一部分。要安装这个包,请遵循以下步骤:
- 将DSF安装包(DSFx86Runtime.msi 或者 DSFx64Runtime.msi) 从WDK媒体复制到要构建测试应用程序的计算机。这台计算机被称为构建计算机。
- 根据构建计算机的CPU平台,通过双击DSFx86Runtime.msi或DSFx64Runtime.msi运行DSF安装包。
- 阅读并接受EULA。
- 展开设备仿真框架的下拉菜单,选择Entire feature will be unavailable。
- 单击“Next ”,然后单击“Install ”来安装预生成的COM类包装器。这也将DSF托管的互操作程序集安装到全局程序集缓存(GAC)中。
注意,为了避免冲突,您必须只在生成计算机中安装托管互操作程序集包。如果先前已经安装了设备仿真框架,则必须从生成计算机卸载它。
为了引用在GAC中安装的DSF托管互操作程序集,在可以通过Visual Studio中的.NET References选项卡访问它们之前,必须将这些程序集复制到Public Assemblies文件夹。欲了解更多信息,请查阅:How to: Add or Remove References in Visual Studio.
- 使用VisualStudio和运行时可调用包装器来生成COM类包装器。
NET框架的公共语言运行时组件通过一个称为运行时可调用包装(RCW)的代理公开COM对象。虽然RCW似乎是.NET客户端的一个普通对象,但是它的主要功能是封送.NET客户端和COM对象之间的调用。
您可以添加对运行时DSFCOM对象的引用,并使用RCW生成COM类包装器。欲了解更多信息,请查阅:Runtime Callable Wrapper。
为了使用RCW,必须在用于构建测试应用程序的计算机中安装DSFCOM对象。仅安装DSFCOM对象,请遵循以下步骤:
- 将DSF安装包(DSFx86Runtime.msi or DSFx64Runtime.msi) 从WDK媒体复制到构建计算机。
- 根据构建计算机的CPU平台,通过双击DSFx86Runtime.msi或DSFx64Runtime.msi运行DSF安装包。
- 阅读并接受EULA。
- 展开托管互操作程序集的下拉菜单,选择Entire feature will be unavailable。
- 单击“Next ”,然后单击“Install ”来安装DSF COM对象。
注意,为了避免冲突,您必须只在生成计算机中安装托管互操作程序集包。如果先前已经安装了设备仿真框架,则必须从生成计算机卸载它。
如果你使用这个方法,你应该知道以下几点:
SoftHIDUSBK 和 SoftHID COM对象不可用,但DSF 和 SoftUSB COM对象是可用的。
此方法仅适用于32位环境。有关如何在64位环境中开发DSF应用程序的更多信息,请查阅: Using Visual Studio to Develop 64-Bit DSF Applications.
原文链接:https://docs.microsoft.com/zh-cn/previous-versions/windows/hardware/dsf/ff538287(v%3dvs.85)