我正在开发一个连接USB大容量存储设备的WDM过滤器驱动程序。我需要能够浏览父母和祖父母设备链(即集线器),并检查供应商和产品ID。
使用IoGetDeviceAttachmentBaseRef(),我可以访问大容量存储设备的PDO,但我已经触及了USB大容量存储设备堆栈的底部。所以现在我需要访问父USB集线器堆栈,但我不确定如何做到这一点。
如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是其中的父/祖父母。大容量存储设备。
答案 0 :(得分:0)
您应该可以轻松地将其作为过滤器附加到所有USB设备,因为它们都属于单个设备设置类(USB)。然后,请注意设置为IRP_MJ_PNP:IRP_MN_QUERY_DEVICE_RELATIONS
RelationType
的{{1}},以了解设备之间的父子关系。
如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是其中的父/祖父母。大容量存储设备。
使用BusRelations
来移动NextDevice列表会更安全。