2

我确实有一个使用 WinUSB 驱动程序 (winusb.sys) 作为其功能驱动程序的 USB 设备。现在我需要编写一个访问该设备的视频捕获驱动程序(必须是内核模式驱动程序)。

我的问题是:我可以从内核模式访问和使用 WinUSB 设备吗?如果是这样,是否有任何文件可以这样做?

我发现的所有文档都在谈论使用 WinUSB.dll 从用户模式访问 WinUSB 但这不是我的选择。我已经尝试使用 IoGetDeviceObjectPointer() 来获取我在 USB 设备上与之通信的 USB 管道所需的文件句柄,但调用总是以 STATUS_ACCESS_DENIED 失败。我知道我可以为 USB 设备编写自己的 KMDF 驱动程序,但使用已经到位的 WinUSB 驱动程序会容易得多。

任何帮助将不胜感激。

4

1 回答 1

0

这可以工作......但很难做到。

您可以在内核模式下向 winusb 设备发送 i/o 请求。您不能使用 WinUSB 函数进行通信,您必须使用实际的 IO 请求从一个 i/o 堆栈到另一个 i/o 堆栈进行通信。

我为 USB 设备编写了一个 AVStream 微型端口驱动程序,并且可以说,USB 部分并不是最难的部分。特别是在微型端口模式下使用 kmdf USB IO 队列时。

于 2012-09-14T14:23:07.757 回答