Use only real serial numbers, otherwise return error on IOCTL_HID_GET_STRING, similar to Windows. Generate consistent container_id (winebus) based on either serial number, uid (macos LocationID), bus_num/port_path (Linux bus_udev) or input/index. Generate consistent guidInstance (dinput) based on device_id/instance_id extracted from the device_path. -- v2: dinput: Make guidInstance consistent through Wine launches. winebus.sys: Make container_id consistent through Wine launches. winebus.sys: When no serial number is available, use bus_num and port_path when generating instance_id. winebus.sys: Add bus_num and port_path to struct device_desc. winebus.sys: Generate serial numbers only if there is no other way to get the real ones (SDL). winebus.sys: Change device index only on devices of the same model that have the same SN. winebus.sys: Don't use predefined (zeroed) serial numbers for devices without SN. winebus.sys: Return an error on IOCTL_HID_GET_STRING when no serial number is available. https://gitlab.winehq.org/wine/wine/-/merge_requests/9687