我正在开发一个连接到USB大容量存储设备的WDM过滤器驱动程序。我需要能够导航父级和祖级设备链(即集线器),并检查供应商和产品ID。
使用IoGetDeviceAttachmentBaseRef(),我可以访问大容量存储设备的PDO,但我已经到达了USB大容量存储设备堆栈的底部。所以现在我需要访问父USB集线器堆栈,但我不确定如何才能做到这一点。
如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是大容量存储设备的父/祖级。
发布于 2016-12-09 21:16:40
您应该能够轻松地将其作为筛选器附加到所有USB设备,因为它们都属于单个设备设置类(USB)。然后,观察将RelationType设置为BusRelations的IRP_MJ_PNP:IRP_MN_QUERY_DEVICE_RELATIONS,以了解设备之间的父子关系。
如果您遍历大容量存储设备的PDO中的NextDevice列表,您可以看到列出的集线器的PDO,但这样做并不能告诉我集线器是大容量存储设备的父/祖级。
使用IoEnumerateDeviceObjectList遍历NextDevice列表更安全。
https://stackoverflow.com/questions/31061036
复制相似问题