File 0002-usb-containerid-trace.patch of Package wine
From 95ca18c9cf31c4f5cd922f0480f7270005293d6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Wed, 8 Jan 2025 06:07:56 +0100
Subject: [PATCH 2/7] usb containerid trace
---
dlls/wineusb.sys/wineusb.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index e2b0f65da8a..393ed31dc2d 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -414,6 +414,7 @@ static void get_serial_number(const struct usb_device *device, struct string_buf
{
if (device->serial[0] != '\0') {
append_id(buffer, L"%s", device->serial);
+ TRACE("Serial %s\n", debugstr_w(buffer->string));
}
}
@@ -423,8 +424,13 @@ static void get_container_id(const struct usb_device *device, struct string_buff
memset(&guid, 0, sizeof(guid));
+ TRACE("get_container_id\n");
+ TRACE("serial %s\n", device->serial);
+ TRACE("container ID %02x\n", device->container_id[0]);
+
if (memcmp(device->container_id, &guid, sizeof(guid)) != 0)
{
+ TRACE("container ID from BOS\n");
memcpy(&guid, device->container_id, sizeof(guid));
}
/* FIXME if the device is not removable, use the ContainerId of its parent */
@@ -434,11 +440,13 @@ static void get_container_id(const struct usb_device *device, struct string_buff
char s[45];
int len = snprintf(s, sizeof(s), "%0.32s%04%04X%04X", device->serial, device->vendor,
device->product, device->revision);
+ TRACE("container ID from Serial Number\n");
/* FIXME Should be UUIDv5 (SHA-1) hash, using a USB specific namespace */
memcpy(&guid, s, len > sizeof(guid) ? sizeof(guid) : len);
}
else
{
+ TRACE("container ID Pseudo-Random\n");
/* FIXME Should create a random ContainerId */
guid.Data1 = (device->vendor << 16) + device->product;
guid.Data2 = device->revision;
@@ -450,6 +458,7 @@ static void get_container_id(const struct usb_device *device, struct string_buff
(unsigned int)guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7] );
+ TRACE("ID %s\n", debugstr_w(buffer->string));
}
static NTSTATUS query_id(struct usb_device *device, IRP *irp, BUS_QUERY_ID_TYPE type)
--
2.49.0