我是驱动程序开发的新手。我开始为 Windows7 开发 USB 过滤器驱动程序,以便向用户隐藏一些 USB 设备类型。我将驱动程序连接到 USB 集线器上,并且可以拦截 IRP_MN_QUERY_DEVICE_RELATIONS。我有几个问题:
1 - On IRP_MN_QUERY_DEVICE_RELATIONS
(QueryDeviceRelations.Type
是 BusRelations)我收到一个指向 .As 的指针DEVICE_RELATIONS struct
。据我所知,结构中的 Objects 数组应该包含指向 PDO 的指针。但是,当我测试DO_BUS_ENUMERATED_DEVICE
标志时(来自 msdn:操作系统在每个物理设备对象(PDO)中设置了这个标志。驱动程序不能修改这个标志。)有时我看到这个标志被打开,有时这个标志被关闭. 这是否意味着有时我会看到 PDO,有时会看到 FDO?或者这个问题的另一种解释?当我得到一些时PDEVICE_OBJECT
,我怎么知道它是 PDO 还是 FDO?
2 - 当用户插入一些 USB 设备,并且过滤器驱动程序应该处理IRP_MN_QUERY_DEVICE_RELATIONS
时,我如何确定对象数组中的哪个设备刚刚插入设备,哪个设备之前插入,哪个被标记为非活动?
提前致谢。费利克斯。