破解设备和应用驱动程序之间的USB通信?

时间:2011-11-27 07:54:27

标签: c++ windows-xp usb

我有一个USB设备,可以使用应用程序驱动程序与我的应用程序通信。我必须创建一个实际模拟与App Driver进行USB通信的应用程序,这样我就不必连接我的设备进行USB通信。

简而言之,我必须使用其他应用程序破解App Driver和设备之间的USB通信。应该注意的是,通信所需的数据将包含在这个新的应用程序中。

不应调整应用驱动程序以便与此代理USB应用程序通信。驱动程序是根据一些国际标准开发的,不会因此类应用而改变。

预期的操作系统将是Windows XP和Windows 7。

如何模拟USB设备,以便我可以在没有任何真实硬件的情况下测试应用程序?

1 个答案:

答案 0 :(得分:2)

硬件设备仿真可以在不同级别完成。较低级别 - 更好的仿真,但通常低级仿真很难开发。它也可以是硬件仿真 - 实现与真实设备相同的通信协议的硬件设备。但我们来谈谈软件模拟。

考虑以下系统结构:高级别(UI) - 硬件访问DLL - 驱动程序 - 通信端口(USB等) - 硬件设备。可以模拟每个级别:从硬件设备本身到硬件访问Dll。

要模拟硬件设备,您应该与硬件开发人员交谈(我猜不是这种情况)。您希望捕获驱动程序调用,以使其对整个软件系统透明。我认为你有更好的机会在osronline上获得有关这种方式的信息 - 这个网站上没有驱动程序专家。

您可以模拟驱动程序,提供另一个驱动程序甚至用户模式库,它可以导出DeviceIoControl,ReadFile,WriteFile。这对于硬件访问Dll几乎是透明的 - 在仿真模式下,它应该调用模拟的DeviceIoControl而不是Win32 DeviceIoControl。

最后,您可以通过在Dll本身中提供仿真功能,或者通过使用相同的接口编写另一个库来模拟硬件访问Dll。

如您所见,最后两个选项非常简单,允许在没有真实设备的情况下进行高级应用程序开发。当然,你想要这样做的方式是最困难的,并且会给出最好的结果。再次尝试在Windows驱动程序开发人员站点中获取有关此内容的更多信息。

同样重要的是,这个完整链(从UI到设备)的哪一部分属于您,以及您的客户开发了哪些部分。如果客户提供硬件设备,驱动程序和硬件访问Dll(SDK),那么您可以模拟此SDK,而无需编写复杂的挂钩内容。