Before this patch, WM_COPYDATA message data was packed at the end of the message and then passed
to KeUserModeCallback() to call user mode callbacks. However, WM_COPYDATA can contain a large amount
of data so KeUserModeCallback() can cause stack overflows. Manual tests on Windows show that
WM_COPYDATA messages with data <= 2048 bytes do have their data packed at the end of the message.
But for WM_COPYDATA messages with data > 2048 bytes, KiUserCallbackDispatcher() gets a 120 bytes
packed arguments, which is the same size when packing WM_COPYDATA messages with no data. So for
WM_COPYDATA messages with data > 2048 bytes, the data must be packed differently.
Fix FCSExpress hangs after sending WM_COPYDATA messages.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7189
--
v2: d3dx9: Link versions 42 and 43 to the corresponding d3dcompiler DLL.
d3dx9: Reimplement D3DXCompileShader() for versions before 42.
d3dcompiler: Use D3DCompile2VKD3D() from vkd3d-utils.
d3dcompiler: Use D3DPreprocess() from vkd3d-utils.
vkd3d: Import vkd3d-utils.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5814
--
v3: rtworkq: Support putting work on RTWQ_CALLBACK_QUEUE_UNDEFINED.
rtworkq/tests: Add a test for putting work on RTWQ_CALLBACK_QUEUE_UNDEFINED.
mfplat/tests: Add a test for putting work on MFASYNC_CALLBACK_QUEUE_UNDEFINED.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7173