Jacek Caban : user32: Use syscall interface for NtUserCall* functions.

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


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

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

user32: Use syscall interface for NtUserCall* functions.

---

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

diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 18881afd27c..f6e918721a4 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1136,10 +1136,6 @@ static struct unix_funcs unix_funcs =
     NtGdiUnrealizeObject,
     NtGdiUpdateColors,
     NtGdiWidenPath,
-    NtUserCallNextHookEx,
-    NtUserCallNoParam,
-    NtUserCallOneParam,
-    NtUserCallTwoParam,
     NtUserChangeClipboardChain,
     NtUserChangeDisplaySettings,
     NtUserClipCursor,
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index ee6b3fa31d1..ffe1703e1e7 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -109,6 +109,10 @@ static void * const syscalls[] =
     NtUserCallHwnd,
     NtUserCallHwndParam,
     NtUserCallMsgFilter,
+    NtUserCallNextHookEx,
+    NtUserCallNoParam,
+    NtUserCallOneParam,
+    NtUserCallTwoParam,
     NtUserCheckMenuItem,
     NtUserChildWindowFromPointEx,
     NtUserCloseDesktop,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index fa4fbbcdfe9..d12b904d3bb 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -777,10 +777,10 @@
 @ stub NtUserCallHwndParamLockSafe
 @ stub NtUserCallHwndSafe
 @ stdcall -syscall NtUserCallMsgFilter(ptr long)
-@ stdcall NtUserCallNextHookEx(long long long long)
-@ stdcall NtUserCallNoParam(long)
-@ stdcall NtUserCallOneParam(long long)
-@ stdcall NtUserCallTwoParam(long long long)
+@ stdcall -syscall NtUserCallNextHookEx(long long long long)
+@ stdcall -syscall NtUserCallNoParam(long)
+@ stdcall -syscall NtUserCallOneParam(long long)
+@ stdcall -syscall NtUserCallTwoParam(long long long)
 @ stub NtUserCanBrokerForceForeground
 @ stdcall NtUserChangeClipboardChain(long long)
 @ stdcall NtUserChangeDisplaySettings(ptr ptr long long ptr)
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 9ef7d8906a7..4fa0b0e3493 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -186,10 +186,6 @@ struct unix_funcs
     BOOL     (WINAPI *pNtGdiUnrealizeObject)( HGDIOBJ obj );
     BOOL     (WINAPI *pNtGdiUpdateColors)( HDC hdc );
     BOOL     (WINAPI *pNtGdiWidenPath)( HDC hdc );
-    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 );
-    ULONG_PTR (WINAPI *pNtUserCallTwoParam)( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
     BOOL     (WINAPI *pNtUserChangeClipboardChain)( HWND hwnd, HWND next );
     LONG     (WINAPI *pNtUserChangeDisplaySettings)( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
                                                      DWORD flags, void *lparam );
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 2cfc6c050db..c9cf89f5fe7 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -725,30 +725,6 @@ NTSTATUS WINAPI NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER
     return unix_funcs->pNtGdiDdDDISetVidPnSourceOwner( desc );
 }
 
-LRESULT WINAPI NtUserCallNextHookEx( HHOOK hhook, INT code, WPARAM wparam, LPARAM lparam )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallNextHookEx( hhook, code, wparam, lparam );
-}
-
-ULONG_PTR WINAPI NtUserCallNoParam( ULONG code )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallNoParam( code );
-}
-
-ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallOneParam( arg, code );
-}
-
-ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code )
-{
-    if (!unix_funcs) return 0;
-    return unix_funcs->pNtUserCallTwoParam( arg1, arg2, code );
-}
-
 BOOL WINAPI NtUserCloseClipboard(void)
 {
     if (!unix_funcs) return FALSE;
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index 71f01ce6207..8ff061ec7f8 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -96,6 +96,10 @@
     SYSCALL_ENTRY( NtUserCallHwnd ) \
     SYSCALL_ENTRY( NtUserCallHwndParam ) \
     SYSCALL_ENTRY( NtUserCallMsgFilter ) \
+    SYSCALL_ENTRY( NtUserCallNextHookEx ) \
+    SYSCALL_ENTRY( NtUserCallNoParam ) \
+    SYSCALL_ENTRY( NtUserCallOneParam ) \
+    SYSCALL_ENTRY( NtUserCallTwoParam ) \
     SYSCALL_ENTRY( NtUserCheckMenuItem ) \
     SYSCALL_ENTRY( NtUserChildWindowFromPointEx ) \
     SYSCALL_ENTRY( NtUserCloseDesktop ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index 948318077f4..68d444a7c83 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -250,6 +250,42 @@ NTSTATUS WINAPI wow64_NtUserCallMsgFilter( UINT *args )
     return ret;
 }
 
+NTSTATUS WINAPI wow64_NtUserCallNextHookEx( UINT *args )
+{
+    HHOOK hhook = get_handle( &args );
+    INT code = get_ulong( &args );
+    WPARAM wparam = get_ulong( &args );
+    LPARAM lparam = get_ulong( &args );
+
+    return NtUserCallNextHookEx( hhook, code, wparam, lparam );
+}
+
+NTSTATUS WINAPI wow64_NtUserCallNoParam( UINT *args )
+{
+    ULONG code = get_ulong( &args );
+
+    return NtUserCallNoParam( code );
+}
+
+NTSTATUS WINAPI wow64_NtUserCallOneParam( UINT *args )
+{
+    ULONG_PTR arg = get_ulong( &args );
+    ULONG code = get_ulong( &args );
+
+    FIXME( "%Ix %lu\n", arg, code );
+    return 0;
+}
+
+NTSTATUS WINAPI wow64_NtUserCallTwoParam( UINT *args )
+{
+    ULONG_PTR arg1 = get_ulong( &args );
+    ULONG_PTR arg2 = get_ulong( &args );
+    ULONG code = get_ulong( &args );
+
+    FIXME( "%Ix %Ix %lu\n", arg1, arg2, code );
+    return 0;
+}
+
 NTSTATUS WINAPI wow64_NtUserCheckMenuItem( UINT *args )
 {
     HMENU handle = get_handle( &args );




More information about the wine-cvs mailing list