From: Rémi Bernon rbernon@codeweavers.com
--- dlls/user32/user32.spec | 2 +- dlls/user32/win.c | 12 ----- dlls/win32u/main.c | 5 ++ dlls/win32u/win32syscalls.h | 98 +++++++++++++++++++------------------ dlls/win32u/win32u.spec | 2 +- dlls/win32u/winstation.c | 6 +++ dlls/wow64win/user.c | 7 +++ include/ntuser.h | 1 + 8 files changed, 71 insertions(+), 62 deletions(-)
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 042730845f1..14246b3e3e0 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -758,7 +758,7 @@ # @ stub SoftModalMessageBox @ stdcall SubtractRect(ptr ptr ptr) @ stdcall SwapMouseButton(long) -@ stdcall SwitchDesktop(long) +@ stdcall SwitchDesktop(long) NtUserSwitchDesktop @ stdcall SwitchToThisWindow(long long) # @ stub SysErrorBox @ stdcall SystemParametersInfoA(long long ptr long) diff --git a/dlls/user32/win.c b/dlls/user32/win.c index b8c04047333..f241d1371f3 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -1571,18 +1571,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetWindowInfo( HWND hwnd, WINDOWINFO *info ) return NtUserGetWindowInfo( hwnd, info ); }
-/****************************************************************************** - * SwitchDesktop (USER32.@) - * - * NOTES: Sets the current input or interactive desktop. - */ -BOOL WINAPI SwitchDesktop( HDESK hDesktop) -{ - FIXME("(hwnd %p) stub!\n", hDesktop); - return TRUE; -} - - /***************************************************************************** * UpdateLayeredWindowIndirect (USER32.@) */ diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index 3f910c214ed..ed0abafe223 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -2034,6 +2034,11 @@ BOOL SYSCALL_API NtUserShowWindowAsync( HWND hwnd, INT cmd ) __ASM_SYSCALL_FUNC( __id_NtUserShowWindowAsync ); }
+BOOL SYSCALL_API NtUserSwitchDesktop( HDESK handle ) +{ + __ASM_SYSCALL_FUNC( __id_NtUserSwitchDesktop ); +} + BOOL SYSCALL_API NtUserSystemParametersInfo( UINT action, UINT val, void *ptr, UINT winini ) { __ASM_SYSCALL_FUNC( __id_NtUserSystemParametersInfo ); diff --git a/dlls/win32u/win32syscalls.h b/dlls/win32u/win32syscalls.h index c8a5ee9367b..da0ba39f771 100644 --- a/dlls/win32u/win32syscalls.h +++ b/dlls/win32u/win32syscalls.h @@ -379,30 +379,31 @@ SYSCALL_ENTRY( 0x0177, NtUserShowScrollBar, 12 ) \ SYSCALL_ENTRY( 0x0178, NtUserShowWindow, 8 ) \ SYSCALL_ENTRY( 0x0179, NtUserShowWindowAsync, 8 ) \ - SYSCALL_ENTRY( 0x017a, NtUserSystemParametersInfo, 16 ) \ - SYSCALL_ENTRY( 0x017b, NtUserSystemParametersInfoForDpi, 20 ) \ - SYSCALL_ENTRY( 0x017c, NtUserThunkedMenuInfo, 8 ) \ - SYSCALL_ENTRY( 0x017d, NtUserThunkedMenuItemInfo, 24 ) \ - SYSCALL_ENTRY( 0x017e, NtUserToUnicodeEx, 28 ) \ - SYSCALL_ENTRY( 0x017f, NtUserTrackMouseEvent, 4 ) \ - SYSCALL_ENTRY( 0x0180, NtUserTrackPopupMenuEx, 24 ) \ - SYSCALL_ENTRY( 0x0181, NtUserTranslateAccelerator, 12 ) \ - SYSCALL_ENTRY( 0x0182, NtUserTranslateMessage, 8 ) \ - SYSCALL_ENTRY( 0x0183, NtUserUnhookWinEvent, 4 ) \ - SYSCALL_ENTRY( 0x0184, NtUserUnhookWindowsHookEx, 4 ) \ - SYSCALL_ENTRY( 0x0185, NtUserUnregisterClass, 12 ) \ - SYSCALL_ENTRY( 0x0186, NtUserUnregisterHotKey, 8 ) \ - SYSCALL_ENTRY( 0x0187, NtUserUpdateInputContext, 12 ) \ - SYSCALL_ENTRY( 0x0188, NtUserUpdateLayeredWindow, 40 ) \ - SYSCALL_ENTRY( 0x0189, NtUserValidateRect, 8 ) \ - SYSCALL_ENTRY( 0x018a, NtUserVkKeyScanEx, 8 ) \ - SYSCALL_ENTRY( 0x018b, NtUserWaitForInputIdle, 12 ) \ - SYSCALL_ENTRY( 0x018c, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x018d, NtUserWindowFromDC, 4 ) \ - SYSCALL_ENTRY( 0x018e, NtUserWindowFromPoint, 8 ) \ - SYSCALL_ENTRY( 0x018f, __wine_get_file_outline_text_metric, 16 ) \ - SYSCALL_ENTRY( 0x0190, __wine_get_icm_profile, 16 ) \ - SYSCALL_ENTRY( 0x0191, __wine_send_input, 12 ) + SYSCALL_ENTRY( 0x017a, NtUserSwitchDesktop, 4 ) \ + SYSCALL_ENTRY( 0x017b, NtUserSystemParametersInfo, 16 ) \ + SYSCALL_ENTRY( 0x017c, NtUserSystemParametersInfoForDpi, 20 ) \ + SYSCALL_ENTRY( 0x017d, NtUserThunkedMenuInfo, 8 ) \ + SYSCALL_ENTRY( 0x017e, NtUserThunkedMenuItemInfo, 24 ) \ + SYSCALL_ENTRY( 0x017f, NtUserToUnicodeEx, 28 ) \ + SYSCALL_ENTRY( 0x0180, NtUserTrackMouseEvent, 4 ) \ + SYSCALL_ENTRY( 0x0181, NtUserTrackPopupMenuEx, 24 ) \ + SYSCALL_ENTRY( 0x0182, NtUserTranslateAccelerator, 12 ) \ + SYSCALL_ENTRY( 0x0183, NtUserTranslateMessage, 8 ) \ + SYSCALL_ENTRY( 0x0184, NtUserUnhookWinEvent, 4 ) \ + SYSCALL_ENTRY( 0x0185, NtUserUnhookWindowsHookEx, 4 ) \ + SYSCALL_ENTRY( 0x0186, NtUserUnregisterClass, 12 ) \ + SYSCALL_ENTRY( 0x0187, NtUserUnregisterHotKey, 8 ) \ + SYSCALL_ENTRY( 0x0188, NtUserUpdateInputContext, 12 ) \ + SYSCALL_ENTRY( 0x0189, NtUserUpdateLayeredWindow, 40 ) \ + SYSCALL_ENTRY( 0x018a, NtUserValidateRect, 8 ) \ + SYSCALL_ENTRY( 0x018b, NtUserVkKeyScanEx, 8 ) \ + SYSCALL_ENTRY( 0x018c, NtUserWaitForInputIdle, 12 ) \ + SYSCALL_ENTRY( 0x018d, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x018e, NtUserWindowFromDC, 4 ) \ + SYSCALL_ENTRY( 0x018f, NtUserWindowFromPoint, 8 ) \ + SYSCALL_ENTRY( 0x0190, __wine_get_file_outline_text_metric, 16 ) \ + SYSCALL_ENTRY( 0x0191, __wine_get_icm_profile, 16 ) \ + SYSCALL_ENTRY( 0x0192, __wine_send_input, 12 )
#define ALL_SYSCALLS64 \ SYSCALL_ENTRY( 0x0000, NtGdiAbortDoc, 8 ) \ @@ -783,27 +784,28 @@ SYSCALL_ENTRY( 0x0177, NtUserShowScrollBar, 24 ) \ SYSCALL_ENTRY( 0x0178, NtUserShowWindow, 16 ) \ SYSCALL_ENTRY( 0x0179, NtUserShowWindowAsync, 16 ) \ - SYSCALL_ENTRY( 0x017a, NtUserSystemParametersInfo, 32 ) \ - SYSCALL_ENTRY( 0x017b, NtUserSystemParametersInfoForDpi, 40 ) \ - SYSCALL_ENTRY( 0x017c, NtUserThunkedMenuInfo, 16 ) \ - SYSCALL_ENTRY( 0x017d, NtUserThunkedMenuItemInfo, 48 ) \ - SYSCALL_ENTRY( 0x017e, NtUserToUnicodeEx, 56 ) \ - SYSCALL_ENTRY( 0x017f, NtUserTrackMouseEvent, 8 ) \ - SYSCALL_ENTRY( 0x0180, NtUserTrackPopupMenuEx, 48 ) \ - SYSCALL_ENTRY( 0x0181, NtUserTranslateAccelerator, 24 ) \ - SYSCALL_ENTRY( 0x0182, NtUserTranslateMessage, 16 ) \ - SYSCALL_ENTRY( 0x0183, NtUserUnhookWinEvent, 8 ) \ - SYSCALL_ENTRY( 0x0184, NtUserUnhookWindowsHookEx, 8 ) \ - SYSCALL_ENTRY( 0x0185, NtUserUnregisterClass, 24 ) \ - SYSCALL_ENTRY( 0x0186, NtUserUnregisterHotKey, 16 ) \ - SYSCALL_ENTRY( 0x0187, NtUserUpdateInputContext, 24 ) \ - SYSCALL_ENTRY( 0x0188, NtUserUpdateLayeredWindow, 80 ) \ - SYSCALL_ENTRY( 0x0189, NtUserValidateRect, 16 ) \ - SYSCALL_ENTRY( 0x018a, NtUserVkKeyScanEx, 16 ) \ - SYSCALL_ENTRY( 0x018b, NtUserWaitForInputIdle, 24 ) \ - SYSCALL_ENTRY( 0x018c, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x018d, NtUserWindowFromDC, 8 ) \ - SYSCALL_ENTRY( 0x018e, NtUserWindowFromPoint, 16 ) \ - SYSCALL_ENTRY( 0x018f, __wine_get_file_outline_text_metric, 32 ) \ - SYSCALL_ENTRY( 0x0190, __wine_get_icm_profile, 32 ) \ - SYSCALL_ENTRY( 0x0191, __wine_send_input, 24 ) + SYSCALL_ENTRY( 0x017a, NtUserSwitchDesktop, 8 ) \ + SYSCALL_ENTRY( 0x017b, NtUserSystemParametersInfo, 32 ) \ + SYSCALL_ENTRY( 0x017c, NtUserSystemParametersInfoForDpi, 40 ) \ + SYSCALL_ENTRY( 0x017d, NtUserThunkedMenuInfo, 16 ) \ + SYSCALL_ENTRY( 0x017e, NtUserThunkedMenuItemInfo, 48 ) \ + SYSCALL_ENTRY( 0x017f, NtUserToUnicodeEx, 56 ) \ + SYSCALL_ENTRY( 0x0180, NtUserTrackMouseEvent, 8 ) \ + SYSCALL_ENTRY( 0x0181, NtUserTrackPopupMenuEx, 48 ) \ + SYSCALL_ENTRY( 0x0182, NtUserTranslateAccelerator, 24 ) \ + SYSCALL_ENTRY( 0x0183, NtUserTranslateMessage, 16 ) \ + SYSCALL_ENTRY( 0x0184, NtUserUnhookWinEvent, 8 ) \ + SYSCALL_ENTRY( 0x0185, NtUserUnhookWindowsHookEx, 8 ) \ + SYSCALL_ENTRY( 0x0186, NtUserUnregisterClass, 24 ) \ + SYSCALL_ENTRY( 0x0187, NtUserUnregisterHotKey, 16 ) \ + SYSCALL_ENTRY( 0x0188, NtUserUpdateInputContext, 24 ) \ + SYSCALL_ENTRY( 0x0189, NtUserUpdateLayeredWindow, 80 ) \ + SYSCALL_ENTRY( 0x018a, NtUserValidateRect, 16 ) \ + SYSCALL_ENTRY( 0x018b, NtUserVkKeyScanEx, 16 ) \ + SYSCALL_ENTRY( 0x018c, NtUserWaitForInputIdle, 24 ) \ + SYSCALL_ENTRY( 0x018d, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x018e, NtUserWindowFromDC, 8 ) \ + SYSCALL_ENTRY( 0x018f, NtUserWindowFromPoint, 16 ) \ + SYSCALL_ENTRY( 0x0190, __wine_get_file_outline_text_metric, 32 ) \ + SYSCALL_ENTRY( 0x0191, __wine_get_icm_profile, 32 ) \ + SYSCALL_ENTRY( 0x0192, __wine_send_input, 24 ) diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 76a60bf1dc8..8aa241b1e7a 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1270,7 +1270,7 @@ @ stub NtUserSlicerControl @ stub NtUserSoundSentry @ stub NtUserStopAndEndInertia -@ stub NtUserSwitchDesktop +@ stdcall -syscall NtUserSwitchDesktop(long) @ stdcall -syscall NtUserSystemParametersInfo(long long ptr long) @ stdcall -syscall NtUserSystemParametersInfoForDpi(long long ptr long long) @ stub NtUserTestForInteractiveUser diff --git a/dlls/win32u/winstation.c b/dlls/win32u/winstation.c index 9df27517a43..ef6a7f2c40f 100644 --- a/dlls/win32u/winstation.c +++ b/dlls/win32u/winstation.c @@ -293,6 +293,12 @@ HDESK WINAPI NtUserOpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK acce return ret; }
+BOOL WINAPI NtUserSwitchDesktop( HDESK desktop ) +{ + FIXME( "desktop %p stub!\n", desktop ); + return TRUE; +} + /*********************************************************************** * NtUserGetObjectInformation (win32u.@) */ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 2dd811578f5..ff3f92c81fe 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -4472,6 +4472,13 @@ NTSTATUS WINAPI wow64_NtUserShowWindowAsync( UINT *args ) return NtUserShowWindowAsync( hwnd, cmd ); }
+NTSTATUS WINAPI wow64_NtUserSwitchDesktop( UINT *args ) +{ + HDESK handle = get_handle( &args ); + + return NtUserSwitchDesktop( handle ); +} + NTSTATUS WINAPI wow64_NtUserSystemParametersInfo( UINT *args ) { UINT action = get_ulong( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index 86f847b8b83..9cf23373cdc 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -784,6 +784,7 @@ W32KAPI BOOL WINAPI NtUserShowWindow( HWND hwnd, INT cmd ); W32KAPI BOOL WINAPI NtUserShowWindowAsync( HWND hwnd, INT cmd ); W32KAPI BOOL WINAPI NtUserSystemParametersInfo( UINT action, UINT val, void *ptr, UINT winini ); W32KAPI BOOL WINAPI NtUserSystemParametersInfoForDpi( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi ); +W32KAPI BOOL WINAPI NtUserSwitchDesktop( HDESK desktop ); W32KAPI BOOL WINAPI NtUserThunkedMenuInfo( HMENU menu, const MENUINFO *info ); W32KAPI UINT WINAPI NtUserThunkedMenuItemInfo( HMENU menu, UINT pos, UINT flags, UINT method, MENUITEMINFOW *info, UNICODE_STRING *str );