我确实有一个使用WinUSB驱动程序(winusb.sys)的USB设备作为它的功能驱动程序。现在我需要编写一个视频捕获驱动程序(必须是内核模式驱动程序)来访问该设备。
我的问题是:我可以从内核模式访问和使用WinUSB设备吗?如果是这样,是否有任何文件可以这样做?
我发现的所有文档都在谈论使用WinUSB.dll从用户模式访问WinUSB,但这对我来说不是一个选项。我已经尝试使用IoGetDeviceObjectPointer()来获取我在USB设备上与之通信的USB管道所需的文件句柄,但是调用总是因STATUS_ACCESS_DENIED而失败。 我知道我可以为USB设备编写自己的KMDF驱动程序,但使用现有的WinUSB驱动程序要容易得多。
任何帮助都会非常感激。
答案 0 :(得分:0)
这可行......但很难做到。
您可以在内核模式下将i / o请求发送到winusb设备。您无法使用WinUSB函数进行通信,您必须使用实际的IO请求从一个I / O堆栈进行通信。
我为USB设备编写了一个AVStream微型端口驱动程序,可以说,USB部分不是硬件。特别是在微型端口模式下使用kmdf USB IO队列时。