當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;