从内核模式访问WinUSB设备

时间:2012-09-14 12:35:57

标签: kernel access-denied winusb

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

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

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

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

这可行......但很难做到。

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

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