Fwiw as you can see in the samples you attached to the bug report it doesn't look like Windows does any kind of case unification here, for instance it has a `&Col01` for HID devices with multiple TLC.
More likely it just uses the hardware IDs internally in the entire stack, keeping their case unchanged, and then use them in various places to build symlink path etc..., and sometimes unifies their case.
In Wine we use the external data, from the registry like here, and they have lost their original case. We should probably find a better way and do it more like Windows, but in this case it was already patched up before so I'm fine patching it slightly differently.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4861#note_58152
IFileOperation_{SetOperationFlags, NewItem, CopyItem, MoveItem, DeleteItem,
GetAnyOperationsAborted, PerformOperations, RenameItem, SetOwnerWindow}
--
v2: shell32/tests: Add test for some functions of IFileOperation.
shell32: Implement some functions of IFileOperation.
shell32: Expand to multiple operation fields.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4817
The PE build uses FlsAlloc(), which for our purposes makes no difference vs TlsAlloc(), and allows the use of a destruction callback.
--
v7: vkd3d: Replace the descriptor object cache with a thread-local implementation.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/384