模拟设备通过USB连接

Mock Device connecting through USB

本文关键字:USB 连接 模拟      更新时间:2023-10-16

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

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

我对这种类型的开发很陌生-这是模仿硬件设备,我在导入用C/c++编写的dll方面不是很有经验。我正在使用Visual Studio 2010 (.net 4.0)来开发我的应用程序,我会感谢任何人可以向我提供模仿硬件的任何帮助。我确实有设备驱动程序,Visual studio拒绝直接引用。我也有一个实际的物理设备,所以我可以看到它在设备管理器中使用的驱动程序。

目标如下

  1. 应用程序将自己注册为usb设备,以类似于Virtual Clone Drive模仿DVD播放器的方式模仿Microsoft Zune。
  2. 应用程序被zone客户端识别为有效的microsoft zone。
  3. Zune软件与应用程序一起工作,因为它与硬件设备(同步等)。

我刚刚找到了一个叫做Device Simulation Framework的东西,它可能正是你所需要的。不过,要完成解决方案,还需要对USB的工作原理进行大量研究。而且可能仍然是用C或c++完成的。

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

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

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


否则,您将不得不编写驱动程序,将USB设备注册为正确的端点。我不确定如何在Windows上做到这一点-我只在固件端做过USB编码,而不是驱动端。您应该能够使用任何教程来创建Windows USB驱动程序,如开始使用USB驱动程序开发

Zune的具体信息也可能有用。也许这篇博文及其后续文章可以提供帮助:Inside Zune/USB Protocol: Part 1