Rémi Bernon (@rbernon) commented about dlls/winebus.sys/main.c:
device->index, device->desc.input, device->desc.pid, device->desc.vid);
}
+static void make_unique_container_id(struct device_extension *device) +{
- struct device_extension *ext;
- LIST_FOR_EACH_ENTRY(ext, &device_list, struct device_extension, entry)
if (IsEqualGUID(&device->desc.container_id, &ext->desc.container_id)) break;
- if (&ext->entry == &device_list && !IsEqualGUID(&device->desc.container_id, &GUID_NULL)) return;
- device->desc.container_id.Data1 = device->desc.input;
- device->desc.container_id.Data2 = device->index;
- device->desc.container_id.Data3 = device->desc.pid;
- device->desc.container_id.Data4[0] = (device->desc.vid >> 8) & 0xff;
- device->desc.container_id.Data4[1] = (device->desc.vid) & 0xff;
I don't expect input/index to be usually large, what about putting MAKELONG(vid,pid) in Data1, index in Data2 and input in Data3. This leaves Data4 free for now, which could be initialized to something unique?