https://bugs.winehq.org/show_bug.cgi?id=43480
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |797a746fc2a1b17d67b7423293e | |081e3e7171033 Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
Win7+ Touch Input API stubs got added, thanks Austin.
--- snip --- ... 0031:Call KERNEL32.GetModuleHandleA(01494af4 "user32.dll") ret=005cbdfb 0031:Ret KERNEL32.GetModuleHandleA() retval=7ebb0000 ret=005cbdfb 0031:Call KERNEL32.GetProcAddress(7ebb0000,014bf690 "RegisterTouchWindow") ret=005cbe06 0031:Ret KERNEL32.GetProcAddress() retval=7ebbb160 ret=005cbe06 0031:Call KERNEL32.GetModuleHandleA(01494af4 "user32.dll") ret=005cbdfb 0031:Ret KERNEL32.GetModuleHandleA() retval=7ebb0000 ret=005cbdfb 0031:Call KERNEL32.GetProcAddress(7ebb0000,014bf6a4 "GetTouchInputInfo") ret=005cbe06 0031:Ret KERNEL32.GetProcAddress() retval=7ebba0e0 ret=005cbe06 0031:Call KERNEL32.GetModuleHandleA(01494af4 "user32.dll") ret=005cbdfb 0031:Ret KERNEL32.GetModuleHandleA() retval=7ebb0000 ret=005cbdfb 0031:Call KERNEL32.GetProcAddress(7ebb0000,014bf6b8 "CloseTouchInputHandle") ret=005cbe06 0031:Ret KERNEL32.GetProcAddress() retval=7ebb8628 ret=005cbe06 0031:Call KERNEL32.GetModuleHandleA(01494af4 "user32.dll") ret=005cbdfb 0031:Ret KERNEL32.GetModuleHandleA() retval=7ebb0000 ret=005cbdfb 0031:Call KERNEL32.GetProcAddress(7ebb0000,014bf6d0 "GetGestureInfo") ret=005cbe06 0031:Ret KERNEL32.GetProcAddress() retval=7ebb9990 ret=005cbe06 0031:Call user32.RegisterTouchWindow(00010078,00000000) ret=0089c04a 0031:fixme:win:RegisterTouchWindow (0x10078 00000000): stub 0031:Ret user32.RegisterTouchWindow() retval=00000000 ret=0089c04a ... --- snip ---
The application still crashes with plain Wine but that's due to the stupidity of the vendor.
--- snip --- 00794E5B PUSH OFFSET 014BF1EC ; ASCII "UpdateLayeredWindow" 00794E60 CALL 005CBDF0 ; resolve API 00794E65 ADD ESP,4 00794E68 MOV DWORD PTR DS:[161925C],EAX 00794E6D TEST EAX,EAX 00794E6F JNE 00794CEE ... 008D9F32 PUSH 2 008D9F34 MOV DWORD PTR SS:[EBP-8C],EDX 008D9F3A MOV DWORD PTR SS:[EBP-20E0],EAX 008D9F40 XOR EAX,EAX 008D9F42 MOV EDX,DWORD PTR SS:[EBP-24] 008D9F45 PUSH ECX 008D9F46 MOV BYTE PTR SS:[EBP-56],DL 008D9F49 LEA EDX,[EBP-20E4] 008D9F4F PUSH EAX 008D9F50 MOV DWORD PTR SS:[EBP-80],ESI 008D9F53 LEA ESI,[EBP-84] 008D9F59 MOV BYTE PTR SS:[EBP-55],1 008D9F5D MOV BYTE PTR SS:[EBP-57],AL 008D9F60 MOV BYTE PTR SS:[EBP-58],AL 008D9F63 PUSH EDX 008D9F64 PUSH DWORD PTR DS:[EDI+0A0] 008D9F6A PUSH ESI 008D9F6B LEA EDI,[EBP-8C] 008D9F71 PUSH EDI 008D9F72 PUSH EAX 008D9F73 PUSH DWORD PTR SS:[EBP-20] 008D9F76 CALL DWORD PTR DS:[161925C] ; UpdateLayeredWindow() 008D9F7C JMP SHORT 008D9FB0 ... --- snip ---
--- snip --- ... 005CC150 PUSH OFFSET 01494B00 ; ASCII "ntdll" 005CC155 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>] 005CC15B TEST EAX,EAX 005CC15D JE SHORT 005CC176 005CC15F PUSH OFFSET 01494B08 ; ASCII "wine_get_version" 005CC164 PUSH EAX 005CC165 CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>] 005CC16B MOV EDX,1 005CC170 TEST EAX,EAX 005CC172 CMOVNE EAX,EDX 005CC175 RETN ... --- snip ---
If Wine is detected it doesn't try to dynamically resolve layered windows API Not all call sites of late-bound layered windows API are checked for NULL pointers. Talk about shooting yourself in the foot...
You need to use Wine-Staging with 'Hide Wine version from applications' option enabled.
Regards