当USB设备插入时,系统需要查询USB设备信息,会向USB驱动发送相关的查询指令。
通常都是在PNP的IRP中处理,主功能号 IRP_MJ_PNP,子功能号为 IRP_MN_QUERY_ID。
可以查询的类型保存在 Parameters.QueryId.IdType 中,各个信息的定义如下:
typedef enum {
BusQueryDeviceID = 0, // <Enumerator>\<Enumerator-specific device id>
BusQueryHardwareIDs = 1, // Hardware ids
BusQueryCompatibleIDs = 2, // compatible device ids
BusQueryInstanceID = 3, // persistent id for this instance of the device
BusQueryDeviceSerialNumber = 4, // serial number for this device
BusQueryContainerID = 5 // unique id of the device's physical container
} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;