我是驱动程序开发的新手。 我开始为Windows7开发USB过滤器驱动程序,以便隐藏用户某些USB设备类型。我将我的驱动程序附加到USB集线器上,并可以拦截IRP_MN_QUERY_DEVICE_RELATIONS。我有几个问题:如何处理USB过滤器驱动程序中的IRP_MN_QUERY_DEVICE_RELATIONS
1 - 在IRP_MN_QUERY_DEVICE_RELATIONS
(QueryDeviceRelations.Type
是BusRelations)我收到一个指向DEVICE_RELATIONS struct
的指针。据我所知struct中的Objects数组应该保存指向PDO的指针。但是,当我测试DO_BUS_ENUMERATED_DEVICE
标志(从msdn:操作系统在每个物理设备对象(PDO)设置此标志。驱动程序不得修改此标志。)有时我看到此标志打开,有时候标志已关闭。这是否意味着我有时会看到PDO,有时我会看到FDO?或者对这个问题另有解释?当我得到一些PDEVICE_OBJECT
时,我怎么知道它是PDO还是FDO?
2 - 当用户插入在一些USB设备,所述过滤驱动器应该处理IRP_MN_QUERY_DEVICE_RELATIONS
,我怎样才能确定从对象阵列哪个设备刚才在设备插入和哪一个是在之前插入,和哪一个是标记为无效?
在此先感谢。费利克斯。
Felix,你可以发布一些你的源代码,这样我就可以知道你是如何实现你的过滤器驱动程序的?马蒂 – 2012-11-01 20:44:45