【问题标题】:Determining the chain of parent devices connected to a USB mass storage device确定连接到 USB 大容量存储设备的父设备链
【发布时间】:2015-09-12 16:34:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: windows driver wdm


    【解决方案1】:

    您应该能够轻松地将过滤器附加到所有 USB 设备,因为它们都属于单个设备设置类 (USB)。然后,观察IRP_MJ_PNP:IRP_MN_QUERY_DEVICE_RELATIONS 并将RelationType 设置为BusRelations 以了解设备之间的父子关系。

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

    使用IoEnumerateDeviceObjectList 遍历NextDevice 列表更安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多