Jacek Caban : win32u: Use syscall interface for NtUserCallHwnd and NtUserCallHwndParam.

Alexandre Julliard julliard at winehq.org
Fri Jul 22 15:37:21 CDT 2022


Module: wine
Branch: master
Commit: a23c1279c6403fda85bcb6c9ca0861b0e853b370
URL:    https://gitlab.winehq.org/wine/wine/-/commit/a23c1279c6403fda85bcb6c9ca0861b0e853b370

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Jul 10 16:19:41 2022 +0200

win32u: Use syscall interface for NtUserCallHwnd and NtUserCallHwndParam.

---

 dlls/win32u/gdiobj.c         |  2 --
 dlls/win32u/syscall.c        |  2 ++
 dlls/win32u/win32u.spec      |  4 ++--
 dlls/win32u/win32u_private.h |  2 --
 dlls/win32u/wrappers.c       | 12 ------------
 dlls/wow64win/syscall.h      |  2 ++
 dlls/wow64win/user.c         | 18 ++++++++++++++++++
 7 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 5bb8adedf44..18881afd27c 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1136,8 +1136,6 @@ static struct unix_funcs unix_funcs =
     NtGdiUnrealizeObject,
     NtGdiUpdateColors,
     NtGdiWidenPath,
-    NtUserCallHwnd,
-    NtUserCallHwndParam,
     NtUserCallNextHookEx,
     NtUserCallNoParam,
     NtUserCallOneParam,
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index 37d94aabcdb..ee6b3fa31d1 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -106,6 +106,8 @@ static void * const syscalls[] =
     NtUserAttachThreadInput,
     NtUserBeginPaint,
     NtUserBuildHwndList,
+    NtUserCallHwnd,
+    NtUserCallHwndParam,
     NtUserCallMsgFilter,
     NtUserCheckMenuItem,
     NtUserChildWindowFromPointEx,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 37d21d46a79..fa4fbbcdfe9 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -768,11 +768,11 @@
 @ stub NtUserBuildPropList
 @ stub NtUserCalcMenuBar
 @ stub NtUserCalculatePopupWindowPosition
-@ stdcall NtUserCallHwnd(long long)
+@ stdcall -syscall NtUserCallHwnd(long long)
 @ stub NtUserCallHwndLock
 @ stub NtUserCallHwndLockSafe
 @ stub NtUserCallHwndOpt
-@ stdcall NtUserCallHwndParam(long ptr long)
+@ stdcall -syscall NtUserCallHwndParam(long ptr long)
 @ stub NtUserCallHwndParamLock
 @ stub NtUserCallHwndParamLockSafe
 @ stub NtUserCallHwndSafe
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 3cb16b0d300..9ef7d8906a7 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -186,8 +186,6 @@ struct unix_funcs
     BOOL     (WINAPI *pNtGdiUnrealizeObject)( HGDIOBJ obj );
     BOOL     (WINAPI *pNtGdiUpdateColors)( HDC hdc );
     BOOL     (WINAPI *pNtGdiWidenPath)( HDC hdc );
-    ULONG_PTR (WINAPI *pNtUserCallHwnd)( HWND hwnd, DWORD code );
-    ULONG_PTR (WINAPI *pNtUserCallHwndParam)( HWND hwnd, DWORD_PTR param, DWORD code );
     LRESULT  (WINAPI *pNtUserCallNextHookEx)( HHOOK hhook, INT code, WPARAM wparam, LPARAM lparam );
     ULONG_PTR (WINAPI *pNtUserCallNoParam)( ULONG code );
     ULONG_PTR (WINAPI *pNtUserCallOneParam)( ULONG_PTR arg, ULONG code );
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 6f6bad05b28..2cfc6c050db 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -749,18 +749,6 @@ ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code
     return unix_funcs->pNtUserCallTwoParam( arg1, arg2, code );
 }
 
-ULONG_PTR WINAPI NtUserCallHwnd( HWND hwnd, DWORD code )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallHwnd( hwnd, code );
-}
-
-ULONG_PTR WINAPI NtUserCallHwndParam( HWND hwnd, DWORD_PTR param, DWORD code )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallHwndParam( hwnd, param, code );
-}
-
 BOOL WINAPI NtUserCloseClipboard(void)
 {
     if (!unix_funcs) return FALSE;
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index aa152eeb650..71f01ce6207 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -93,6 +93,8 @@
     SYSCALL_ENTRY( NtUserAttachThreadInput ) \
     SYSCALL_ENTRY( NtUserBeginPaint ) \
     SYSCALL_ENTRY( NtUserBuildHwndList ) \
+    SYSCALL_ENTRY( NtUserCallHwnd ) \
+    SYSCALL_ENTRY( NtUserCallHwndParam ) \
     SYSCALL_ENTRY( NtUserCallMsgFilter ) \
     SYSCALL_ENTRY( NtUserCheckMenuItem ) \
     SYSCALL_ENTRY( NtUserChildWindowFromPointEx ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index db7d4d06556..948318077f4 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -220,6 +220,24 @@ NTSTATUS WINAPI wow64_NtUserBuildHwndList( UINT *args )
     return status;
 }
 
+NTSTATUS WINAPI wow64_NtUserCallHwnd( UINT *args )
+{
+    HWND hwnd = get_handle( &args );
+    DWORD code = get_ulong( &args );
+
+    return NtUserCallHwnd( hwnd, code );
+}
+
+NTSTATUS WINAPI wow64_NtUserCallHwndParam( UINT *args )
+{
+    HWND hwnd = get_handle( &args );
+    DWORD_PTR param = get_ulong( &args );
+    DWORD code = get_ulong( &args );
+
+    FIXME( "%p %Ix %lu\n", hwnd, param, code );
+    return 0;
+}
+
 NTSTATUS WINAPI wow64_NtUserCallMsgFilter( UINT *args )
 {
     MSG32 *msg32 = get_ptr( &args );




More information about the wine-cvs mailing list