Rémi Bernon (@rbernon) commented about dlls/winebus.sys/main.c:
+ } + else if (desc->uid) + { + device->container_id.Data3 = 0; + *(UINT64 *)device->container_id.Data4 = desc->uid; + } + else if (desc->bus_num || desc->port_path[0]) + { + device->container_id.Data3 = desc->bus_num; + memcpy(device->container_id.Data4, desc->port_path, sizeof(desc->port_path)); + } + else + { + device->container_id.Data3 = desc->input; + *(UINT64 *)device->container_id.Data4 = device->index; + } I think this was meant as a temporary solution but the main issue is that we will need to be able to do the same kind of thing on the mmdevapi side, because the ContainerID is used to match the haptics audio device with its controller.
I don't think it's implemented in Wine yet but I know @cmcadams was looking into it, and I'm not very up to date to what we'll need or be able to do there. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9687#note_124903