Rémi Bernon (@rbernon) commented about dlls/winebus.sys/bus_udev.c:
} }
+static void get_usb_interface_info(struct udev_device *dev, struct device_desc *desc) +{ + UINT class = 0, subclass = 0, protocol = 0; + struct udev_device *iface; + const char *tmp; + + if (!(iface = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface"))) return; + if ((tmp = udev_device_get_sysattr_value(iface, "bInterfaceClass"))) sscanf(tmp, "%x", &class); + if ((tmp = udev_device_get_sysattr_value(iface, "bInterfaceSubClass"))) sscanf(tmp, "%x", &subclass); + if ((tmp = udev_device_get_sysattr_value(iface, "bInterfaceProtocol"))) sscanf(tmp, "%x", &protocol); + desc->bus_id = (class << 16) | (subclass << 8) | protocol;
Not sure if it can happen but lets make sure this matches the decoding side. ```suggestion:-0+0 desc->bus_id = ((class & 0xff) << 16) | ((subclass & 0xff) << 8) | (protocol & 0xff); ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11205#note_149515