通过 USB 连接的模拟设备

Jos*_*osh 5 c# c++ mocking zune hardware-interface

我有一个设备和该设备的驱动程序。我想做的是构建一个模拟 USB 设备与第三方应用程序通信的应用程序。

更具体地说,我正在尝试构建一个可以模拟 USB 设备的应用程序,该设备模仿 Microsoft Zune。我想让我的应用程序可以注册为 zune 设备,然后与客户端通信。我已经在我的应用程序中添加了几个 DLL,以便尝试确定告诉软件所连接的设备是合法 zune 的调用,但到目前为止我还没有太多运气。

我对这种类型的开发很陌生 - 这是模仿硬件设备,而且我在导入用 C/C++ 编写的 dll 方面没有太多经验。我正在使用 Visual Studio 2010 (.net 4.0) 来开发我的应用程序,如果任何人可以为我提供模仿硬件的任何帮助,我将不胜感激。我确实有设备驱动程序,但 Visual Studio 拒绝直接引用。我还有一个实际的物理设备,因此我可以在设备管理器中查看它使用的驱动程序。

目标如下

  1. 应用程序将自身注册为 USB 设备,以类似于虚拟克隆驱动器模仿 DVD 播放器的方式模仿 Microsoft Zune。
  2. 应用程序被 zune 客户端识别为有效的 microsoft zune。
  3. Zune 软件与应用程序的配合就像与硬件设备的配合一样(同步等)

Rei*_*ica 2

您可以用自己的 DLL 替换 zune 客户端软件使用的 DLL 吗?在这种情况下,您可以用您的 DLL 包装原始 DLL 并拦截操作。

更新:要找出 DLL 中函数的签名,请查看Dependency Walker工具,它将列出导出的函数(以及许多其他信息)。我猜您会想用 C 语言编写替换 DLL。


否则,您必须编写驱动程序来向正确的端点注册 USB 设备。我不知道如何在 Windows 上执行此操作 - 我只在固件端完成了 USB 编码,而不是在驱动程序端。您应该能够使用任何教程来创建 Windows USB 驱动程序,例如USB 驱动程序开发入门

Zune 的具体信息也可能有用。也许这篇博文及其续篇可以有所帮助:Zune/USB 协议内部:第 1 部分