To later be properly implemented using winstation atom table.
The idea is to try to share the atom table in shared memory, to avoid round trips when reading window class info. The global atom table lives in ntdll and moving the session shared memory there seems more inconvenient than using atom tables in winstation shared objects, which could stay in win32u.
Note that there doesn't seem to be any dedicated syscall for RegisterClipboardFormat but it seem to be basically doing the same as RegisterWindowMessage, so I'm using the same syscall.
--
v2: user32: Implement RegisterClipboardFormat(A|W) using NtUserRegisterWindowMessage.
user32: Implement RegisterWindowMessage(A|W) using NtUserRegisterWindowMessage.
win32u/tests: Test some pinned global and user atoms.
win32u/tests: Test that user atoms are not a global atoms.
win32u: Implement NtUserRegisterWindowMessage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8304
Generic ATTribute Profile (GATT) is a protocol used by BLE devices for data exchange. Broadly, every LE device contains one or more GATT services, with each service having multiple characteristics, which contain the actual piece of data to be exchanged. The Win32 BLE api is defined in [`bluetoothleapis.h`](https://learn.microsoft.com/en-us/windows/win32/api/bluetoothleapis/), and operates on `HANDLE`s to PDOs created by the driver to remote devices and services, using the `GUID_BLUETOOTHLE_DEVICE_INTERFACE` and `GUID_BLUETOOTH_GATT_SERVICE_DEVICE_INTERFACE` class interfaces respectively.
This MR introduces initial support for accessing GATT services on LE devices:
* Create PDOs for remote devices that we discover GATT services on, and enabling `GUID_BLUETOOTHLE_DEVICE_INTERFACE` for them.
* Because the driver also creates PDOs for bluetooth radios, a tagged union is used to distinguish between device extension values to dispatch IOCTL and PnP IRPs appropriately.
* Enumerate through all `org.bluez.GattService1` objects on BlueZ, and store them on the PE driver inside the associated devices.
* Implement IOCTL_WINEBTH_LE_DEVICE_GET_GATT_SERVICES for device PDOs.
* Use the newly added IOCTL to implement [`BluetoothGATTGetServices`](https://learn.microsoft.com/en-us/windows/win32/api/bluetoothleapis/nf-bluetoothleapis-bluetoothgattgetservices).
--
v9: bluetoothapis/tests: Add tests for BluetoothGATTGetServices.
bluetoothapis: Implement BluetoothGATTGetServices.
winebth.sys: Implement IOCTL_WINEBTH_LE_DEVICE_GET_GATT_SERVICES.
winebth.sys: Store a list of GATT services discovered on LE devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8174
--
v3: ir50_32: Suggest 24-bit RGB.
ir50_32: Return ICERR_OK from ICM_DECOMPRESS_END.
ir50_32: Do not handle a NULL input pointer in ICM_DECOMPRESS_GET_FORMAT.
ir50_32: Use case-insensitive comparison for the compression fourcc.
ir50_32/tests: Move compression and decompression tests from mf:transform.
ir50_32/tests: Add tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8280