模拟设备通过USB连接
Mock Device connecting through USB
我有一个设备和这个设备的驱动程序。我想做的是构建一个应用程序,模拟USB设备与第三方应用程序通信。
更具体地说,我正在尝试构建一个应用程序,可以模仿模仿微软Zune的USB设备。我想让它,所以我的应用程序可以注册为一个zune设备,然后与客户端通信。我已经在我的应用程序中添加了几个DLL,以便尝试确定调用,告诉软件连接的设备是一个合法的区域,但到目前为止,我还没有多少运气。
我对这种类型的开发很陌生-这是模仿硬件设备,我在导入用C/c++编写的dll方面不是很有经验。我正在使用Visual Studio 2010 (.net 4.0)来开发我的应用程序,我会感谢任何人可以向我提供模仿硬件的任何帮助。我确实有设备驱动程序,Visual studio拒绝直接引用。我也有一个实际的物理设备,所以我可以看到它在设备管理器中使用的驱动程序。
目标如下
- 应用程序将自己注册为usb设备,以类似于Virtual Clone Drive模仿DVD播放器的方式模仿Microsoft Zune。
- 应用程序被zone客户端识别为有效的microsoft zone。 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
- 当套接字连接断开时检测C/C++Unix
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 插入或删除时获取usb的dos_name
- 无法在windows上使用mingw将sqlite3与c连接
- 如何确定SSD驱动器是固定驱动器还是连接在USB上
- 如何从Qt绑定到在Windows 7 / 8 / 10中连接/断开USB设备事件
- 获取使用 Qt c++ 在 Linux 中通过 USB 连接的 ESC/POS 打印机的状态
- C++从外部设备读取数据 - 连接:光电USB
- 识别与 Windows USB 虚拟 COM 端口的连接事件
- C++-WinAPI获取所有连接的USB设备的列表
- 如何从 mac os x 上通过 USB 连接的多轨混音器获取输入
- 是否有适用于Windows的iTunes C++库允许访问USB连接的iOS设备的文件系统?
- 使用IMFSourceReaderCallback检测USB摄像头断开连接
- 从连接的 USB 设备检索'Device Instance Path'
- 在不轮询GetMessage()的情况下检测USB连接/断开连接
- 如何最正确地使用libusb与连接的USB设备进行通信
- 创建USB隧道连接加密狗
- 如何通过USB将Android应用程序与pc上的c++程序连接
- 找出 USB 连接来自哪个端口
- 模拟设备通过USB连接