模拟设备通过USB连接

时间:2011-04-29 18:53:05

标签: c# c++ mocking hardware-interface zune

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

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

我是这类开发的新手 - 模仿硬件设备,而且我在导入用C / C ++编写的dll方面不是很有经验。我正在使用Visual Studio 2010(.net 4.0)来开发我的应用程序,我很感激任何人都可以提供给我模仿硬件的帮助。我有设备驱动程序,Visual Studio拒绝直接引用。我还有一个实际的物理设备,所以我可以看到它在设备管理器中使用的驱动程序。

目标如下

  1. 应用程序将自身注册为USB设备,以类似于Virtual Clone Drive模仿DVD播放器的方式模仿Microsoft Zune。
  2. 应用程序被zune客户端识别为有效的microsoft zune。
  3. Zune Software使用应用程序,因为它使用硬件设备(同步等)

2 个答案:

答案 0 :(得分:3)

我刚发现了一个名为Device Simulation Framework的东西,这可能就是你所需要的。但是,仍然需要对USB如何完成您的解决方案进行大量研究。可能仍然通常使用C或C ++完成。

Zune使用名为MTPZ的MTP协议的修改版本,但我发现此示例使用设备仿真框架来模拟常规MTP设备。它被称为The MTP Device Simulator。我无法判断源代码是否可用。

答案 1 :(得分:2)

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

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


否则,您必须编写使用正确端点注册USB设备的驱动程序。我不确定如何在Windows上执行此操作 - 我只在固件端进行USB编码,而不是在驱动程序端。您应该可以使用任何教程来创建Windows USB驱动程序,例如Getting Started with USB Driver Development

Zune细节信息也可能有用。也许这篇博文及其续集可以提供帮助:Inside the Zune/USB Protocol: Part 1