https://bugs.winehq.org/show_bug.cgi?id=49162
--- Comment #3 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Zebediah Figura from comment #2)
Yep, MIDL screws this up too (or rpcrt4 does). It doesn't screw it up in the same way as Wine (it actually seems to return the right value for the return value and the wrong value for the out parameter), but suffice it to say, you can't depend on pointer-size types working across different bitnesses. We could probably fix it to work on Wine regardless, but I'm inclined to believe it isn't worthwhile...
Thanks for looking at this! It's perfectly acceptable that the pointer gets truncated, that's unavoidable, the source that I have here uses pointer mapper (the idea is similar to remote handle manager that msi uses), so that's not a problem. I've created this bug report mostly for the bug with return value being wrong, and if it's not very much effort I'd like to see it fixed.