Originally posted by Weasel
View Post
Yes some of the reason particular anti-cheats break badly between windows version is the stunts they are up-to here.
Originally posted by Weasel
View Post
cdecl __wine_send_input(long ptr)
This was added in Wed, 11 Sep 2019
If you don't care for perfectly working raw input this can be skipped.
cdecl __wine_set_pixel_format(long long)
You don't need this one if you expect opengl to take what ever buffer type wine user32 spits up or have forced wine user32 back into GDI mode. Microsoft user32 always runs in GDI mode so using gdi32.
This here is a wine performance optimisation to skip over in its user32 from having to interface with gdi32.dll and go directly to opengl instead and that results in having to deal with the case of how to handle what opengl buffer type to use.
The reality you can remove both of those extra functions and wine user32 works with some issues but it does work.
Weasel both of the extra exports user32.dll from wine can in fact function without.
These are not the reason why you cannot just remove and replace wine user32.dll. The reason is kind of more horrible. WIN_CreateWindowEx is what CreateWindowEx is called inside wine guess where you end up under wine when you attempt to syscall NtUserCreateWindowEx that right straight back in wine user32.dll. This is why Reactos developers at time says wine is designed by a drunk person because if you are following windows that syscall should lead you intoWin32k not to user32.dll as wine does.
A native user32.dll replacing wine core user32.dll does not work because its not designed to replace kernel functionality and wine one is. The funny part is with the way the syscalls flow around inside wine it is possible to use Microsoft user32.dll on wine just not named user32.dll.
But anticheat systems you will find replacing all calls to user32.dll to their own made up version directly based on gdi32.dll and nt syscalls. Yes Microsoft says don't use NT syscalls because they can change in future as well. This explains why anti-cheat systems can be so touchy on windows updates at times because they are by passing abstractions in the windows design. gdi32.dll changed to PE will effect anti-cheat.
Anti-cheats implementing their own user32.dll replacements don't name them user32.dll but the result is the applications using the anti-cheat solutions are not using user32.dll from Microsoft and yes the bipass they do is not recommend by Microsoft and causes some wacky code paths in wine where what the anti-cheat developers coded to avoid Microsoft user32.dll end up in fact going though wine user32.dll.
Originally posted by Weasel
View Post
-mno-cygwin have existed on things before the build as PE with wine started. Its called build with msvcrt because it changes to using the msvcrt .dll inside wine instead of direct glibc of host. Yes using host glibc of course you cannot built a PE with mingw right. Using msvcrt from the elf/pe hybrid user32.dll.so instead of glibc host has a lot of effects as well.
Comment