Jacek Caban : win32u: Introduce inline helpers for NtUserCallHwnd calls.

Alexandre Julliard julliard at winehq.org
Wed Apr 13 15:14:45 CDT 2022


Module: wine
Branch: master
Commit: 31dbce9675b6f2b25a4af5d4102fc36213838137
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=31dbce9675b6f2b25a4af5d4102fc36213838137

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Apr 13 15:08:02 2022 +0200

win32u: Introduce inline helpers for NtUserCallHwnd calls.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/win.c    | 20 ++++++-------
 dlls/user32/winpos.c |  2 +-
 dlls/win32u/window.c | 30 ++++++++++++-------
 include/ntuser.h     | 81 ++++++++++++++++++++++++++++++++++++++++++----------
 4 files changed, 97 insertions(+), 36 deletions(-)

diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 24aeaaeadfd..5223c776d5f 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -906,7 +906,7 @@ BOOL WINAPI EnableWindow( HWND hwnd, BOOL enable )
  */
 BOOL WINAPI IsWindowEnabled( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserIsWindowEnabled );
+    return NtUserIsWindowEnabled( hwnd );
 }
 
 /***********************************************************************
@@ -914,7 +914,7 @@ BOOL WINAPI IsWindowEnabled( HWND hwnd )
  */
 BOOL WINAPI IsWindowUnicode( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserIsWindowUnicode );
+    return NtUserIsWindowUnicode( hwnd );
 }
 
 
@@ -923,7 +923,7 @@ BOOL WINAPI IsWindowUnicode( HWND hwnd )
  */
 DPI_AWARENESS_CONTEXT WINAPI GetWindowDpiAwarenessContext( HWND hwnd )
 {
-    return (DPI_AWARENESS_CONTEXT)NtUserCallHwnd( hwnd, NtUserGetWindowDpiAwarenessContext );
+    return NtUserGetWindowDpiAwarenessContext( hwnd );
 }
 
 
@@ -932,7 +932,7 @@ DPI_AWARENESS_CONTEXT WINAPI GetWindowDpiAwarenessContext( HWND hwnd )
  */
 UINT WINAPI GetDpiForWindow( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserGetDpiForWindow );
+    return NtUserGetDpiForWindow( hwnd );
 }
 
 
@@ -1215,7 +1215,7 @@ INT WINAPI GetWindowTextLengthA( HWND hwnd )
 
     /* when window belongs to other process, don't send a message */
     GetCPInfo( CP_ACP, &info );
-    return NtUserCallHwnd( hwnd, NtUserGetWindowTextLength ) * info.MaxCharSize;
+    return NtUserGetWindowTextLength( hwnd ) * info.MaxCharSize;
 }
 
 /*******************************************************************
@@ -1226,7 +1226,7 @@ INT WINAPI GetWindowTextLengthW( HWND hwnd )
     if (WIN_IsCurrentProcess( hwnd )) return SendMessageW( hwnd, WM_GETTEXTLENGTH, 0, 0 );
 
     /* when window belongs to other process, don't send a message */
-    return NtUserCallHwnd( hwnd, NtUserGetWindowTextLength );
+    return NtUserGetWindowTextLength( hwnd );
 }
 
 
@@ -1235,7 +1235,7 @@ INT WINAPI GetWindowTextLengthW( HWND hwnd )
  */
 BOOL WINAPI IsWindow( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserIsWindow );
+    return NtUserIsWindow( hwnd );
 }
 
 
@@ -1253,7 +1253,7 @@ DWORD WINAPI GetWindowThreadProcessId( HWND hwnd, LPDWORD process )
  */
 HWND WINAPI GetParent( HWND hwnd )
 {
-    return UlongToHandle( NtUserCallHwnd( hwnd, NtUserGetParent ));
+    return NtUserGetParent( hwnd );
 }
 
 
@@ -1271,7 +1271,7 @@ BOOL WINAPI IsChild( HWND parent, HWND child )
  */
 BOOL WINAPI IsWindowVisible( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserIsWindowVisible );
+    return NtUserIsWindowVisible( hwnd );
 }
 
 
@@ -1564,7 +1564,7 @@ BOOL WINAPI FlashWindow( HWND hWnd, BOOL bInvert )
  */
 DWORD WINAPI GetWindowContextHelpId( HWND hwnd )
 {
-    return NtUserCallHwnd( hwnd, NtUserGetWindowContextHelpId );
+    return NtUserGetWindowContextHelpId( hwnd );
 }
 
 
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index 3f7a38a75c9..04a3ddb5e21 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -895,7 +895,7 @@ BOOL WINAPI EndDeferWindowPos( HDWP hdwp )
  */
 UINT WINAPI ArrangeIconicWindows( HWND parent )
 {
-    return NtUserCallHwnd( parent, NtUserArrangeIconicWindows );
+    return NtUserArrangeIconicWindows( parent );
 }
 
 
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c
index b2913b267c4..b7a6ebb7090 100644
--- a/dlls/win32u/window.c
+++ b/dlls/win32u/window.c
@@ -4976,26 +4976,36 @@ ULONG_PTR WINAPI NtUserCallHwnd( HWND hwnd, DWORD code )
 {
     switch (code)
     {
-    case NtUserArrangeIconicWindows:
+    case NtUserCallHwnd_ArrangeIconicWindows:
         return arrange_iconic_windows( hwnd );
-    case NtUserGetDpiForWindow:
+
+    case NtUserCallHwnd_GetDpiForWindow:
         return get_dpi_for_window( hwnd );
-    case NtUserGetParent:
+
+    case NtUserCallHwnd_GetParent:
         return HandleToUlong( get_parent( hwnd ));
-    case NtUserGetWindowContextHelpId:
+
+    case NtUserCallHwnd_GetWindowContextHelpId:
         return get_window_context_help_id( hwnd );
-    case NtUserGetWindowDpiAwarenessContext:
+
+    case NtUserCallHwnd_GetWindowDpiAwarenessContext:
         return (ULONG_PTR)get_window_dpi_awareness_context( hwnd );
-    case NtUserGetWindowTextLength:
+
+    case NtUserCallHwnd_GetWindowTextLength:
         return get_server_window_text( hwnd, NULL, 0 );
-    case NtUserIsWindow:
+
+    case NtUserCallHwnd_IsWindow:
         return is_window( hwnd );
-    case NtUserIsWindowEnabled:
+
+    case NtUserCallHwnd_IsWindowEnabled:
         return is_window_enabled( hwnd );
-    case NtUserIsWindowUnicode:
+
+    case NtUserCallHwnd_IsWindowUnicode:
         return is_window_unicode( hwnd );
-    case NtUserIsWindowVisible:
+
+    case NtUserCallHwnd_IsWindowVisible:
         return is_window_visible( hwnd );
+
     default:
         FIXME( "invalid code %u\n", code );
         return 0;
diff --git a/include/ntuser.h b/include/ntuser.h
index 8d94fc133da..df89c63b405 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -131,21 +131,6 @@ struct win_hook_params
 #define NTUSER_DPI_PER_MONITOR_AWARE_V2   0x00000022
 #define NTUSER_DPI_PER_UNAWARE_GDISCALED  0x40006010
 
-/* NtUserCallHwnd codes, not compatible with Windows */
-enum
-{
-    NtUserArrangeIconicWindows,
-    NtUserGetDpiForWindow,
-    NtUserGetParent,
-    NtUserGetWindowContextHelpId,
-    NtUserGetWindowDpiAwarenessContext,
-    NtUserGetWindowTextLength,
-    NtUserIsWindow,
-    NtUserIsWindowEnabled,
-    NtUserIsWindowUnicode,
-    NtUserIsWindowVisible,
-};
-
 /* NtUserCallHwndParam codes, not compatible with Windows */
 enum
 {
@@ -810,4 +795,70 @@ static inline BOOL NtUserUnhookWindowsHook( INT id, HOOKPROC proc )
     return NtUserCallTwoParam( id, (UINT_PTR)proc, NtUserCallTwoParam_UnhookWindowsHook );
 }
 
+/* NtUserCallHwnd codes, not compatible with Windows */
+enum
+{
+    NtUserCallHwnd_ArrangeIconicWindows,
+    NtUserCallHwnd_GetDpiForWindow,
+    NtUserCallHwnd_GetParent,
+    NtUserCallHwnd_GetWindowContextHelpId,
+    NtUserCallHwnd_GetWindowDpiAwarenessContext,
+    NtUserCallHwnd_GetWindowTextLength,
+    NtUserCallHwnd_IsWindow,
+    NtUserCallHwnd_IsWindowEnabled,
+    NtUserCallHwnd_IsWindowUnicode,
+    NtUserCallHwnd_IsWindowVisible,
+};
+
+static inline UINT NtUserArrangeIconicWindows( HWND parent )
+{
+    return NtUserCallHwnd( parent, NtUserCallHwnd_ArrangeIconicWindows );
+}
+
+static inline DWORD NtUserGetWindowContextHelpId( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetWindowContextHelpId );
+}
+
+static inline UINT NtUserGetDpiForWindow( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetDpiForWindow );
+}
+
+static inline HWND NtUserGetParent( HWND hwnd )
+{
+    return UlongToHandle( NtUserCallHwnd( hwnd, NtUserCallHwnd_GetParent ));
+}
+
+static inline DPI_AWARENESS_CONTEXT NtUserGetWindowDpiAwarenessContext( HWND hwnd )
+{
+    return (DPI_AWARENESS_CONTEXT)NtUserCallHwnd( hwnd,
+                                                  NtUserCallHwnd_GetWindowDpiAwarenessContext );
+}
+
+static inline INT NtUserGetWindowTextLength( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetWindowTextLength );
+}
+
+static inline BOOL NtUserIsWindow( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindow );
+}
+
+static inline BOOL NtUserIsWindowEnabled( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowEnabled );
+}
+
+static inline BOOL NtUserIsWindowUnicode( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowUnicode );
+}
+
+static inline BOOL NtUserIsWindowVisible( HWND hwnd )
+{
+    return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowVisible );
+}
+
 #endif /* _NTUSER_ */




More information about the wine-cvs mailing list