4

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

更具体地说,我正在尝试构建一个可以模拟模仿 Microsoft Zune 的 USB 设备的应用程序。我想这样做,以便我的应用程序可以注册为 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 软件与应用程序一起工作,就像它与硬件设备一样(同步等)
4

2 回答 2

3

我刚刚找到了一个叫做Device Simulation Framework的东西,它可能正是你所需要的。不过,仍然需要对 USB 如何工作以完成您的解决方案进行大量研究。并且可能仍然通常使用 C 或 C++ 完成。

Zune 使用称为 MTPZ 的 MTP 协议的修改版本,但我发现此示例使用设备模拟框架来模拟常规 MTP 设备。它被称为MTP 设备模拟器。我不知道源代码是否可用。

于 2011-04-29T20:39:08.617 回答
2

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

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


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

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

于 2011-04-29T20:01:44.393 回答