在任何特定时间,主机上只能使用 USB 设备的一种配置。大多数设备仅支持一种配置。但是,少数 USB 设备支持多种配置。
对于具有多种配置的任何设备,都是采用可使用某驱动程序的第一种配置。查找匹配项时,设备配置以数字顺序处理。如果未找到任何匹配的驱动程序,则设备将被设置采用第一种配置。在这种情况下,usb_mid 驱动程序将接管该设备,并将设备拆分为多个接口节点。使用 usb_get_cfg(9F) 函数可返回设备的当前配置。
您可以使用以下两种方法中的任何一种来请求采用其他配置。使用其中任何一种方法修改设备配置,均可确保 USBA 模块保持与设备同步。
使用 cfgadm_usb(1M) 命令。
从驱动程序调用 usb_set_cfg(9F) 函数。
由于更改设备配置会影响整个设备,因此客户机驱动程序必须满足以下所有条件,才能成功调用 usb_set_cfg(9F) 函数:
客户机驱动程序必须拥有整个设备。
设备不能有子节点,因为其他驱动程序可能会通过这些子节点驱动该设备。
必须关闭除缺省管道之外的所有管道。
设备必须具有多种配置。
不要通过手动执行 SET_CONFIGURATION USB 请求来更改设备配置。不支持使用 SET_CONFIGURATION 请求更改配置。