Wine doesn't handle Pooling as yet and in my scenario it's set to 0 (No Pooling), so not an issue but requires a successful return value.
SQLTransact incorrectly assumed that if either handle was NULL an error occurred. I'm seeing a call where the Environment handle is NULL, even unixODBC handles this scenario.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6098
--
v2: win32u: Use the thread input shared memory for GetKeyState.
server: Expose the thread input keystate lock through shared memory.
server: Make the get_key_state request key code mandatory.
win32u: Use the desktop shared memory in get_async_keyboard_state.
win32u: Use the thread input shared memory in GetKeyboardState.
win32u: Introduce a new NtUserGetAsyncKeyboardState call.
server: Expose the thread input keystate through shared memory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6036
Marking this as draft for now, as I need to revisit it at some point. If removing the copy is possible, that would be even better than optimizing it. In which case the final solution may look very different to the one here (resulting in the closure of this MR).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5979#note_76372