5

可能对一些广泛使用 WinUSB API 或用户模式 ​​USB 驱动程序的人提出的问题 - WinUSB API 或用户模式驱动程序是否可以用作 USB 连接的被动观察者,捕获中断通知、控制请求、数据传输等。在不干扰其他应用程序(例如 iTunes)的情况下,这些应用程序显然需要同时访问设备,同时我的应用程序正在监视连接并在其上显示数据?

或者您是否必须编写内核模式过滤器驱动程序并将自己注入 USB 堆栈才能实现这一点?

过去,有一些可靠的选择(具体来说是 libusb-win32 和 usbsnoop),尽管它们都是围绕旧的 DDK 而不是 Windows Driver Foundation 构建的,并且不再真正得到定期支持。结果,我犹豫要不要在他们周围建立一些重要的东西。

4

3 回答 3

4

您必须编写过滤器驱动程序。没有其他方法可以拦截其他设备产生的流量。您可以使用更新版本的 DDK,即 KMDF 来执行此任务。它会让你的生活更轻松。但是我认为仅仅获得硬件总线分析器会更便宜,更有效。

OSR有一个很好的概述。您必须登录才能阅读本文,但如果您要进行任何内核模式开发,我强烈建议您无论如何都要登录。

于 2009-09-01T12:17:22.673 回答
2

Windows 7 中的核心 USB 驱动程序具有 ETW 跟踪点,因此您可以通过这种方式嗅探流量(博客文章ETW in the Windows 7 USB core stack),但它有点笨拙并且有一些限制,例如仅跟踪前 32 个字节每个数据包。

我制作了一个非常易于使用的 USB 过滤器驱动程序(KMDF)(恕我直言):http ://code.google.com/p/busdog/

于 2010-06-05T10:29:40.170 回答
0

USB Sniffer 允许您显示、记录和分析在连接到您的 PC 和应用程序的任何 USB 设备之间传输的所有数据。您还可以恢复传输的数据(对于某些文件类型)。

生成的项目包括以下组件:驱动程序、公共库、GUI。 http://tellmeword.com/5zu2z5

于 2013-06-18T07:26:22.977 回答