确定连接到USB大容量存储设备的父设备链

时间:2015-06-25 21:23:06

标签: windows driver wdm

我正在开发一个连接USB大容量存储设备的WDM过滤器驱动程序。我需要能够浏览父母和祖父母设备链(即集线器),并检查供应商和产品ID。

使用IoGetDeviceAttachmentBaseRef(),我可以访问大容量存储设备的PDO,但我已经触及了USB大容量存储设备堆栈的底部。所以现在我需要访问父USB集线器堆栈,但我不确定如何做到这一点。

如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是其中的父/祖父母。大容量存储设备。

1 个答案:

答案 0 :(得分:0)

您应该可以轻松地将其作为过滤器附加到所有USB设备,因为它们都属于单个设备设置类(USB)。然后,请注意设置为IRP_MJ_PNP:IRP_MN_QUERY_DEVICE_RELATIONS RelationType的{​​{1}},以了解设备之间的父子关系。

  

如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是其中的父/祖父母。大容量存储设备。

使用BusRelations来移动NextDevice列表会更安全。