在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安装包安装的托管互操作程序集包的一部分。要安装这个包,请遵循以下步骤:

  1. 将DSF安装包(DSFx86Runtime.msi 或者 DSFx64Runtime.msi) 从WDK媒体复制到要构建测试应用程序的计算机。这台计算机被称为构建计算机。
  2. 根据构建计算机的CPU平台,通过双击DSFx86Runtime.msiDSFx64Runtime.msi运行DSF安装包。
  3. 阅读并接受EULA。
  4. 展开设备仿真框架的下拉菜单,选择Entire feature will be unavailable
  5. 单击“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对象,请遵循以下步骤:

  1. 将DSF安装包(DSFx86Runtime.msi or DSFx64Runtime.msi) 从WDK媒体复制到构建计算机。
  2. 根据构建计算机的CPU平台,通过双击DSFx86Runtime.msiDSFx64Runtime.msi运行DSF安装包。
  3. 阅读并接受EULA。
  4. 展开托管互操作程序集的下拉菜单,选择Entire feature will be unavailable
  5. 单击“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)

USB设备仿真框架设计指南——11.在托管代码中开发DSF应用程序相关推荐

  1. USB设备仿真框架设计指南——7.USB设备模拟器示例

    本节描述DSF中包含的USB设备模拟器示例. 本节包括以下内容: DSF USB HID通用样本 DSF USB Loopback设备仿真 DSF USB音频设备示例 USB键盘样本 英文原文连接:h ...

  2. USB设备仿真框架设计指南——4.DSF中的COM对象

    DSF使用COM自动化对象将DSF服务暴露给设备模拟器.您可以从任何具有COM客户端能力的语言访问这些对象.几乎所有对象都公开了只使用OLE自动化兼容数据类型的双接口. 返回对象的COM方法和属性总是 ...

  3. linux pcie驱动框架_Linux设备驱动框架设计

    引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码.能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Li ...

  4. USB设备的电源设计考虑

    USB设备的电源设计考虑 作者:duoduo 在USB接口有四根线,分别是VBUS,D-,D+,GND.其中VBUS线是HOST/HUB向USB设备供电的电源线.HOST/HUB每个端口通过VBUS提 ...

  5. Android通用框架设计与完整电商APP开发系列文章

    作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [[导学视频](http://szv1.m ...

  6. 苹果设备蓝牙接入设计指南

    本文介绍了针对硬件通过蓝牙传输来与苹果产品包括Mac,iPhone和iPod touch等交互的设计指南.为了能够与苹果产品兼容,现在和未来的设计当中,蓝牙计入都应该遵循本文中的规范.本文主要分为两个 ...

  7. [蓝牙]苹果设备蓝牙接入设计指南 - xp19870106

    本文介绍了针对硬件通过蓝牙传输来与苹果产品包括Mac,iPhone和iPod touch等交互的设计指南.为了能够与苹果产品兼容,现在和未来的设计当中,蓝牙计入都应该遵循本文中的规范.本文主要分为两个 ...

  8. 【OMNET+Veins+SUMO】【视频】车联网仿真框架搭建指南

    1.简介 针对车联网方向的研究方向的童鞋,在OMNET搭建基本的仿真平台,需要安装两个插件Veins和SUMO.仿真软件OMNET的基本安装和使用本文不多赘述,前面的博文有介绍.下面重点说明一下Vei ...

  9. 《框架设计指南》:属性变更通知事件

    详细的告诉我c#中,属性 get和set的作用 在 C# 中,属性是一种特殊的类成员,它们将类字段公开为类的外部.属性中的 `get` 和 `set` 访问器定义了对该属性进行读取和写入时执行的代码. ...

最新文章

  1. Linux 下 进程运行时内部函数耗时的统计 工具:pstack,strace,perf trace,systemtap
  2. Navicat for MySQL 设置定时任务
  3. C++编程思想:模板
  4. python中的字典推导式_17.python 字典推导式(经典代码)
  5. 网络编程之如何通过URL获取网页代码
  6. 单目摄像机测距(python+opencv)(转载)
  7. BZOJ1968: [Ahoi2005]COMMON 约数研究
  8. DICOM开发工具总结
  9. 笛卡尔坐标系_笛卡儿坐标系
  10. 在苹果Mac上如何指定发送邮件的时间?
  11. PJSIP视频用户开发
  12. Kubernetes CKA认证运维工程师笔记-Kubernetes存储
  13. Linux 命令行快捷键
  14. python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列
  15. 笔记本win10系统部分应用显示模糊的问题——已解决!
  16. 计算机其它离的360云盘,多台电脑无缝共享文件 360云盘无限保存
  17. 一步步教你使用云端服务器yeelink远程监控
  18. 蚂蚁庄园喂鸡投放饲料+加速卡+蹭吃耗时产量计算
  19. 解决 nuxt 获取不到自定义环境变量问题
  20. NFT是登记在区块链上的所有权证书

热门文章

  1. 读王蒙的《庄子的快活》
  2. title_activity_dist is not translated in zh-rCN (Chinese: China)
  3. python换照片底色_Python 利用OpenCV给照片换底色的示例代码
  4. Unity的AB包系统使用概论
  5. java.lang.IllegalAccessException:的一种错误类型
  6. 机器翻译的评价标准BLEU(Evaluation criteria for machine translation)
  7. 全国大学生软件测试大赛Web应用测试(六)Jmeter性能测试具体流程
  8. 有哪些既实用又好看的蓝牙耳机?高颜值实用蓝牙耳机排行
  9. 蓝桥杯练习 数的读法
  10. 平板触控笔要原装的吗?ipad电容笔推荐平价