Jacek Caban (@jacek) commented about dlls/wow64win/user.c:
return TRUE;
}
+static NTSTATUS WINAPI wow64_NtUserDispatchCallback( void *arg, ULONG size ) +{
- struct user32_callback_params *params = arg;
- struct user32_callback_params32 *params32;
- NTSTATUS status;
- void *ret_ptr;
- ULONG ret_len;
- size -= sizeof(*params);
- if (!(params32 = Wow64AllocateTemp( sizeof(*params32) + size )))
`Wow64AllocateTemp` is not really right here, it will be freed by the first syscall from the callback (and yes, we already have this problem, that's on my TODO list to fix). You could just use HeapAlloc or maybe store the function as UINT64 in the first place and just pass the input buffer to callback here.