Microsoft Edge worked if windows version is set to win8.1 (or win7) but now crashes in current wine due to this unimplemented function. This patch makes it work again in win8.1 mode; (It's still broken in win10 mode, see https://bugs.winehq.org/show_bug.cgi?id=56378 for more info)
-- v5: win32u: Add stub for NtUserSetAdditionalForegroundBoostProcesses.
From: Louis Lenders xerox.xerox2000x@gmail.com
Microsoft Edge worked if windows version is set to win8.1 (or win7) but now crashes in current wine due to this unimplemented function. This patch makes it work again in win8.1 mode; (It's still broken in win10 mode, see https://bugs.winehq.org/show_bug.cgi?id=56378 for more info) --- dlls/user32/user32.spec | 2 +- dlls/win32u/main.c | 5 + dlls/win32u/sysparams.c | 10 ++ dlls/win32u/win32syscalls.h | 298 ++++++++++++++++++------------------ dlls/win32u/win32u.spec | 2 +- dlls/wow64win/user.c | 8 + include/ntuser.h | 1 + 7 files changed, 176 insertions(+), 150 deletions(-)
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index d8e82d9503b..c4c4c0d5970 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -164,7 +164,7 @@ # 2662 stub RIMRegisterForInputEx # 2663 stub RIMOnAsyncPnpWorkNotification 2664 stub ShellMigrateWindow # NtUserShellMigrateWindow -2665 stub SetAdditionalForegroundBoostProcesses # NtUserSetAdditionalForegroundBoostProcesses +2665 stdcall SetAdditionalForegroundBoostProcesses(ptr long ptr) NtUserSetAdditionalForegroundBoostProcesses 2666 stub RegisterForTooltipDismissNotification # NtUserRegisterForTooltipDismissNotification 2667 stub RegisterForCustomDockTargets # NtUserRegisterForCustomDockTargets 2668 stub GetClipboardMetadata # NtUserGetClipboardMetadata diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index 6a2606c365c..87885b207bc 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -2055,6 +2055,11 @@ HWND SYSCALL_API NtUserSetActiveWindow( HWND hwnd ) SYSCALL_FUNC( NtUserSetActiveWindow ); }
+BOOL SYSCALL_API NtUserSetAdditionalForegroundBoostProcesses( HWND hwnd, DWORD count, HANDLE *array ) +{ + SYSCALL_FUNC( NtUserSetAdditionalForegroundBoostProcesses ); +} + HWND SYSCALL_API NtUserSetCapture( HWND hwnd ) { SYSCALL_FUNC( NtUserSetCapture ); diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 0f31d3e49b1..464df79d02f 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -6973,6 +6973,16 @@ BOOL WINAPI NtUserMessageBeep( UINT type ) return TRUE; }
+/*********************************************************************** + * NtUserSetAdditionalForegroundBoostProcesses (win32u.@) + */ +BOOL WINAPI NtUserSetAdditionalForegroundBoostProcesses( HWND hwnd, DWORD count, HANDLE *array ) +{ + FIXME( "%p %ld %p stub!\n", hwnd, count, array ); + RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} + static DWORD exiting_thread_id;
/********************************************************************** diff --git a/dlls/win32u/win32syscalls.h b/dlls/win32u/win32syscalls.h index 79b45c17a07..76f1cea0d13 100644 --- a/dlls/win32u/win32syscalls.h +++ b/dlls/win32u/win32syscalls.h @@ -384,80 +384,81 @@ SYSCALL_ENTRY( 0x017c, NtUserSelectPalette, 12 ) \ SYSCALL_ENTRY( 0x017d, NtUserSendInput, 12 ) \ SYSCALL_ENTRY( 0x017e, NtUserSetActiveWindow, 4 ) \ - SYSCALL_ENTRY( 0x017f, NtUserSetCapture, 4 ) \ - SYSCALL_ENTRY( 0x0180, NtUserSetCaretBlinkTime, 4 ) \ - SYSCALL_ENTRY( 0x0181, NtUserSetCaretPos, 8 ) \ - SYSCALL_ENTRY( 0x0182, NtUserSetClassLong, 16 ) \ - SYSCALL_ENTRY( 0x0183, NtUserSetClassLongPtr, 16 ) \ - SYSCALL_ENTRY( 0x0184, NtUserSetClassWord, 12 ) \ - SYSCALL_ENTRY( 0x0185, NtUserSetClipboardData, 12 ) \ - SYSCALL_ENTRY( 0x0186, NtUserSetClipboardViewer, 4 ) \ - SYSCALL_ENTRY( 0x0187, NtUserSetCursor, 4 ) \ - SYSCALL_ENTRY( 0x0188, NtUserSetCursorIconData, 16 ) \ - SYSCALL_ENTRY( 0x0189, NtUserSetCursorPos, 8 ) \ - SYSCALL_ENTRY( 0x018a, NtUserSetFocus, 4 ) \ - SYSCALL_ENTRY( 0x018b, NtUserSetInternalWindowPos, 16 ) \ - SYSCALL_ENTRY( 0x018c, NtUserSetKeyboardState, 4 ) \ - SYSCALL_ENTRY( 0x018d, NtUserSetLayeredWindowAttributes, 16 ) \ - SYSCALL_ENTRY( 0x018e, NtUserSetMenu, 8 ) \ - SYSCALL_ENTRY( 0x018f, NtUserSetMenuContextHelpId, 8 ) \ - SYSCALL_ENTRY( 0x0190, NtUserSetMenuDefaultItem, 12 ) \ - SYSCALL_ENTRY( 0x0191, NtUserSetObjectInformation, 16 ) \ - SYSCALL_ENTRY( 0x0192, NtUserSetParent, 8 ) \ - SYSCALL_ENTRY( 0x0193, NtUserSetProcessDefaultLayout, 4 ) \ - SYSCALL_ENTRY( 0x0194, NtUserSetProcessDpiAwarenessContext, 8 ) \ - SYSCALL_ENTRY( 0x0195, NtUserSetProcessWindowStation, 4 ) \ - SYSCALL_ENTRY( 0x0196, NtUserSetProgmanWindow, 4 ) \ - SYSCALL_ENTRY( 0x0197, NtUserSetProp, 12 ) \ - SYSCALL_ENTRY( 0x0198, NtUserSetScrollInfo, 16 ) \ - SYSCALL_ENTRY( 0x0199, NtUserSetShellWindowEx, 8 ) \ - SYSCALL_ENTRY( 0x019a, NtUserSetSysColors, 12 ) \ - SYSCALL_ENTRY( 0x019b, NtUserSetSystemMenu, 8 ) \ - SYSCALL_ENTRY( 0x019c, NtUserSetSystemTimer, 12 ) \ - SYSCALL_ENTRY( 0x019d, NtUserSetTaskmanWindow, 4 ) \ - SYSCALL_ENTRY( 0x019e, NtUserSetThreadDesktop, 4 ) \ - SYSCALL_ENTRY( 0x019f, NtUserSetTimer, 20 ) \ - SYSCALL_ENTRY( 0x01a0, NtUserSetWinEventHook, 32 ) \ - SYSCALL_ENTRY( 0x01a1, NtUserSetWindowContextHelpId, 8 ) \ - SYSCALL_ENTRY( 0x01a2, NtUserSetWindowLong, 16 ) \ - SYSCALL_ENTRY( 0x01a3, NtUserSetWindowLongPtr, 16 ) \ - SYSCALL_ENTRY( 0x01a4, NtUserSetWindowPlacement, 8 ) \ - SYSCALL_ENTRY( 0x01a5, NtUserSetWindowPos, 28 ) \ - SYSCALL_ENTRY( 0x01a6, NtUserSetWindowRgn, 12 ) \ - SYSCALL_ENTRY( 0x01a7, NtUserSetWindowWord, 12 ) \ - SYSCALL_ENTRY( 0x01a8, NtUserSetWindowsHookEx, 24 ) \ - SYSCALL_ENTRY( 0x01a9, NtUserShowCaret, 4 ) \ - SYSCALL_ENTRY( 0x01aa, NtUserShowCursor, 4 ) \ - SYSCALL_ENTRY( 0x01ab, NtUserShowOwnedPopups, 8 ) \ - SYSCALL_ENTRY( 0x01ac, NtUserShowScrollBar, 12 ) \ - SYSCALL_ENTRY( 0x01ad, NtUserShowWindow, 8 ) \ - SYSCALL_ENTRY( 0x01ae, NtUserShowWindowAsync, 8 ) \ - SYSCALL_ENTRY( 0x01af, NtUserSwitchDesktop, 4 ) \ - SYSCALL_ENTRY( 0x01b0, NtUserSystemParametersInfo, 16 ) \ - SYSCALL_ENTRY( 0x01b1, NtUserSystemParametersInfoForDpi, 20 ) \ - SYSCALL_ENTRY( 0x01b2, NtUserThunkedMenuInfo, 8 ) \ - SYSCALL_ENTRY( 0x01b3, NtUserThunkedMenuItemInfo, 24 ) \ - SYSCALL_ENTRY( 0x01b4, NtUserToUnicodeEx, 28 ) \ - SYSCALL_ENTRY( 0x01b5, NtUserTrackMouseEvent, 4 ) \ - SYSCALL_ENTRY( 0x01b6, NtUserTrackPopupMenuEx, 24 ) \ - SYSCALL_ENTRY( 0x01b7, NtUserTranslateAccelerator, 12 ) \ - SYSCALL_ENTRY( 0x01b8, NtUserTranslateMessage, 8 ) \ - SYSCALL_ENTRY( 0x01b9, NtUserUnhookWinEvent, 4 ) \ - SYSCALL_ENTRY( 0x01ba, NtUserUnhookWindowsHook, 8 ) \ - SYSCALL_ENTRY( 0x01bb, NtUserUnhookWindowsHookEx, 4 ) \ - SYSCALL_ENTRY( 0x01bc, NtUserUnregisterClass, 12 ) \ - SYSCALL_ENTRY( 0x01bd, NtUserUnregisterHotKey, 8 ) \ - SYSCALL_ENTRY( 0x01be, NtUserUpdateInputContext, 12 ) \ - SYSCALL_ENTRY( 0x01bf, NtUserUpdateLayeredWindow, 40 ) \ - SYSCALL_ENTRY( 0x01c0, NtUserValidateRect, 8 ) \ - SYSCALL_ENTRY( 0x01c1, NtUserValidateRgn, 8 ) \ - SYSCALL_ENTRY( 0x01c2, NtUserVkKeyScanEx, 8 ) \ - SYSCALL_ENTRY( 0x01c3, NtUserWaitForInputIdle, 12 ) \ - SYSCALL_ENTRY( 0x01c4, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x01c5, NtUserWindowFromDC, 4 ) \ - SYSCALL_ENTRY( 0x01c6, NtUserWindowFromPoint, 8 ) \ - SYSCALL_ENTRY( 0x01c7, __wine_get_file_outline_text_metric, 16 ) \ - SYSCALL_ENTRY( 0x01c8, __wine_get_icm_profile, 16 ) + SYSCALL_ENTRY( 0x017f, NtUserSetAdditionalForegroundBoostProcesses, 12 ) \ + SYSCALL_ENTRY( 0x0180, NtUserSetCapture, 4 ) \ + SYSCALL_ENTRY( 0x0181, NtUserSetCaretBlinkTime, 4 ) \ + SYSCALL_ENTRY( 0x0182, NtUserSetCaretPos, 8 ) \ + SYSCALL_ENTRY( 0x0183, NtUserSetClassLong, 16 ) \ + SYSCALL_ENTRY( 0x0184, NtUserSetClassLongPtr, 16 ) \ + SYSCALL_ENTRY( 0x0185, NtUserSetClassWord, 12 ) \ + SYSCALL_ENTRY( 0x0186, NtUserSetClipboardData, 12 ) \ + SYSCALL_ENTRY( 0x0187, NtUserSetClipboardViewer, 4 ) \ + SYSCALL_ENTRY( 0x0188, NtUserSetCursor, 4 ) \ + SYSCALL_ENTRY( 0x0189, NtUserSetCursorIconData, 16 ) \ + SYSCALL_ENTRY( 0x018a, NtUserSetCursorPos, 8 ) \ + SYSCALL_ENTRY( 0x018b, NtUserSetFocus, 4 ) \ + SYSCALL_ENTRY( 0x018c, NtUserSetInternalWindowPos, 16 ) \ + SYSCALL_ENTRY( 0x018d, NtUserSetKeyboardState, 4 ) \ + SYSCALL_ENTRY( 0x018e, NtUserSetLayeredWindowAttributes, 16 ) \ + SYSCALL_ENTRY( 0x018f, NtUserSetMenu, 8 ) \ + SYSCALL_ENTRY( 0x0190, NtUserSetMenuContextHelpId, 8 ) \ + SYSCALL_ENTRY( 0x0191, NtUserSetMenuDefaultItem, 12 ) \ + SYSCALL_ENTRY( 0x0192, NtUserSetObjectInformation, 16 ) \ + SYSCALL_ENTRY( 0x0193, NtUserSetParent, 8 ) \ + SYSCALL_ENTRY( 0x0194, NtUserSetProcessDefaultLayout, 4 ) \ + SYSCALL_ENTRY( 0x0195, NtUserSetProcessDpiAwarenessContext, 8 ) \ + SYSCALL_ENTRY( 0x0196, NtUserSetProcessWindowStation, 4 ) \ + SYSCALL_ENTRY( 0x0197, NtUserSetProgmanWindow, 4 ) \ + SYSCALL_ENTRY( 0x0198, NtUserSetProp, 12 ) \ + SYSCALL_ENTRY( 0x0199, NtUserSetScrollInfo, 16 ) \ + SYSCALL_ENTRY( 0x019a, NtUserSetShellWindowEx, 8 ) \ + SYSCALL_ENTRY( 0x019b, NtUserSetSysColors, 12 ) \ + SYSCALL_ENTRY( 0x019c, NtUserSetSystemMenu, 8 ) \ + SYSCALL_ENTRY( 0x019d, NtUserSetSystemTimer, 12 ) \ + SYSCALL_ENTRY( 0x019e, NtUserSetTaskmanWindow, 4 ) \ + SYSCALL_ENTRY( 0x019f, NtUserSetThreadDesktop, 4 ) \ + SYSCALL_ENTRY( 0x01a0, NtUserSetTimer, 20 ) \ + SYSCALL_ENTRY( 0x01a1, NtUserSetWinEventHook, 32 ) \ + SYSCALL_ENTRY( 0x01a2, NtUserSetWindowContextHelpId, 8 ) \ + SYSCALL_ENTRY( 0x01a3, NtUserSetWindowLong, 16 ) \ + SYSCALL_ENTRY( 0x01a4, NtUserSetWindowLongPtr, 16 ) \ + SYSCALL_ENTRY( 0x01a5, NtUserSetWindowPlacement, 8 ) \ + SYSCALL_ENTRY( 0x01a6, NtUserSetWindowPos, 28 ) \ + SYSCALL_ENTRY( 0x01a7, NtUserSetWindowRgn, 12 ) \ + SYSCALL_ENTRY( 0x01a8, NtUserSetWindowWord, 12 ) \ + SYSCALL_ENTRY( 0x01a9, NtUserSetWindowsHookEx, 24 ) \ + SYSCALL_ENTRY( 0x01aa, NtUserShowCaret, 4 ) \ + SYSCALL_ENTRY( 0x01ab, NtUserShowCursor, 4 ) \ + SYSCALL_ENTRY( 0x01ac, NtUserShowOwnedPopups, 8 ) \ + SYSCALL_ENTRY( 0x01ad, NtUserShowScrollBar, 12 ) \ + SYSCALL_ENTRY( 0x01ae, NtUserShowWindow, 8 ) \ + SYSCALL_ENTRY( 0x01af, NtUserShowWindowAsync, 8 ) \ + SYSCALL_ENTRY( 0x01b0, NtUserSwitchDesktop, 4 ) \ + SYSCALL_ENTRY( 0x01b1, NtUserSystemParametersInfo, 16 ) \ + SYSCALL_ENTRY( 0x01b2, NtUserSystemParametersInfoForDpi, 20 ) \ + SYSCALL_ENTRY( 0x01b3, NtUserThunkedMenuInfo, 8 ) \ + SYSCALL_ENTRY( 0x01b4, NtUserThunkedMenuItemInfo, 24 ) \ + SYSCALL_ENTRY( 0x01b5, NtUserToUnicodeEx, 28 ) \ + SYSCALL_ENTRY( 0x01b6, NtUserTrackMouseEvent, 4 ) \ + SYSCALL_ENTRY( 0x01b7, NtUserTrackPopupMenuEx, 24 ) \ + SYSCALL_ENTRY( 0x01b8, NtUserTranslateAccelerator, 12 ) \ + SYSCALL_ENTRY( 0x01b9, NtUserTranslateMessage, 8 ) \ + SYSCALL_ENTRY( 0x01ba, NtUserUnhookWinEvent, 4 ) \ + SYSCALL_ENTRY( 0x01bb, NtUserUnhookWindowsHook, 8 ) \ + SYSCALL_ENTRY( 0x01bc, NtUserUnhookWindowsHookEx, 4 ) \ + SYSCALL_ENTRY( 0x01bd, NtUserUnregisterClass, 12 ) \ + SYSCALL_ENTRY( 0x01be, NtUserUnregisterHotKey, 8 ) \ + SYSCALL_ENTRY( 0x01bf, NtUserUpdateInputContext, 12 ) \ + SYSCALL_ENTRY( 0x01c0, NtUserUpdateLayeredWindow, 40 ) \ + SYSCALL_ENTRY( 0x01c1, NtUserValidateRect, 8 ) \ + SYSCALL_ENTRY( 0x01c2, NtUserValidateRgn, 8 ) \ + SYSCALL_ENTRY( 0x01c3, NtUserVkKeyScanEx, 8 ) \ + SYSCALL_ENTRY( 0x01c4, NtUserWaitForInputIdle, 12 ) \ + SYSCALL_ENTRY( 0x01c5, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x01c6, NtUserWindowFromDC, 4 ) \ + SYSCALL_ENTRY( 0x01c7, NtUserWindowFromPoint, 8 ) \ + SYSCALL_ENTRY( 0x01c8, __wine_get_file_outline_text_metric, 16 ) \ + SYSCALL_ENTRY( 0x01c9, __wine_get_icm_profile, 16 )
#define ALL_SYSCALLS64 \ SYSCALL_ENTRY( 0x0000, NtGdiAbortDoc, 8 ) \ @@ -843,77 +844,78 @@ SYSCALL_ENTRY( 0x017c, NtUserSelectPalette, 24 ) \ SYSCALL_ENTRY( 0x017d, NtUserSendInput, 24 ) \ SYSCALL_ENTRY( 0x017e, NtUserSetActiveWindow, 8 ) \ - SYSCALL_ENTRY( 0x017f, NtUserSetCapture, 8 ) \ - SYSCALL_ENTRY( 0x0180, NtUserSetCaretBlinkTime, 8 ) \ - SYSCALL_ENTRY( 0x0181, NtUserSetCaretPos, 16 ) \ - SYSCALL_ENTRY( 0x0182, NtUserSetClassLong, 32 ) \ - SYSCALL_ENTRY( 0x0183, NtUserSetClassLongPtr, 32 ) \ - SYSCALL_ENTRY( 0x0184, NtUserSetClassWord, 24 ) \ - SYSCALL_ENTRY( 0x0185, NtUserSetClipboardData, 24 ) \ - SYSCALL_ENTRY( 0x0186, NtUserSetClipboardViewer, 8 ) \ - SYSCALL_ENTRY( 0x0187, NtUserSetCursor, 8 ) \ - SYSCALL_ENTRY( 0x0188, NtUserSetCursorIconData, 32 ) \ - SYSCALL_ENTRY( 0x0189, NtUserSetCursorPos, 16 ) \ - SYSCALL_ENTRY( 0x018a, NtUserSetFocus, 8 ) \ - SYSCALL_ENTRY( 0x018b, NtUserSetInternalWindowPos, 32 ) \ - SYSCALL_ENTRY( 0x018c, NtUserSetKeyboardState, 8 ) \ - SYSCALL_ENTRY( 0x018d, NtUserSetLayeredWindowAttributes, 32 ) \ - SYSCALL_ENTRY( 0x018e, NtUserSetMenu, 16 ) \ - SYSCALL_ENTRY( 0x018f, NtUserSetMenuContextHelpId, 16 ) \ - SYSCALL_ENTRY( 0x0190, NtUserSetMenuDefaultItem, 24 ) \ - SYSCALL_ENTRY( 0x0191, NtUserSetObjectInformation, 32 ) \ - SYSCALL_ENTRY( 0x0192, NtUserSetParent, 16 ) \ - SYSCALL_ENTRY( 0x0193, NtUserSetProcessDefaultLayout, 8 ) \ - SYSCALL_ENTRY( 0x0194, NtUserSetProcessDpiAwarenessContext, 16 ) \ - SYSCALL_ENTRY( 0x0195, NtUserSetProcessWindowStation, 8 ) \ - SYSCALL_ENTRY( 0x0196, NtUserSetProgmanWindow, 8 ) \ - SYSCALL_ENTRY( 0x0197, NtUserSetProp, 24 ) \ - SYSCALL_ENTRY( 0x0198, NtUserSetScrollInfo, 32 ) \ - SYSCALL_ENTRY( 0x0199, NtUserSetShellWindowEx, 16 ) \ - SYSCALL_ENTRY( 0x019a, NtUserSetSysColors, 24 ) \ - SYSCALL_ENTRY( 0x019b, NtUserSetSystemMenu, 16 ) \ - SYSCALL_ENTRY( 0x019c, NtUserSetSystemTimer, 24 ) \ - SYSCALL_ENTRY( 0x019d, NtUserSetTaskmanWindow, 8 ) \ - SYSCALL_ENTRY( 0x019e, NtUserSetThreadDesktop, 8 ) \ - SYSCALL_ENTRY( 0x019f, NtUserSetTimer, 40 ) \ - SYSCALL_ENTRY( 0x01a0, NtUserSetWinEventHook, 64 ) \ - SYSCALL_ENTRY( 0x01a1, NtUserSetWindowContextHelpId, 16 ) \ - SYSCALL_ENTRY( 0x01a2, NtUserSetWindowLong, 32 ) \ - SYSCALL_ENTRY( 0x01a3, NtUserSetWindowLongPtr, 32 ) \ - SYSCALL_ENTRY( 0x01a4, NtUserSetWindowPlacement, 16 ) \ - SYSCALL_ENTRY( 0x01a5, NtUserSetWindowPos, 56 ) \ - SYSCALL_ENTRY( 0x01a6, NtUserSetWindowRgn, 24 ) \ - SYSCALL_ENTRY( 0x01a7, NtUserSetWindowWord, 24 ) \ - SYSCALL_ENTRY( 0x01a8, NtUserSetWindowsHookEx, 48 ) \ - SYSCALL_ENTRY( 0x01a9, NtUserShowCaret, 8 ) \ - SYSCALL_ENTRY( 0x01aa, NtUserShowCursor, 8 ) \ - SYSCALL_ENTRY( 0x01ab, NtUserShowOwnedPopups, 16 ) \ - SYSCALL_ENTRY( 0x01ac, NtUserShowScrollBar, 24 ) \ - SYSCALL_ENTRY( 0x01ad, NtUserShowWindow, 16 ) \ - SYSCALL_ENTRY( 0x01ae, NtUserShowWindowAsync, 16 ) \ - SYSCALL_ENTRY( 0x01af, NtUserSwitchDesktop, 8 ) \ - SYSCALL_ENTRY( 0x01b0, NtUserSystemParametersInfo, 32 ) \ - SYSCALL_ENTRY( 0x01b1, NtUserSystemParametersInfoForDpi, 40 ) \ - SYSCALL_ENTRY( 0x01b2, NtUserThunkedMenuInfo, 16 ) \ - SYSCALL_ENTRY( 0x01b3, NtUserThunkedMenuItemInfo, 48 ) \ - SYSCALL_ENTRY( 0x01b4, NtUserToUnicodeEx, 56 ) \ - SYSCALL_ENTRY( 0x01b5, NtUserTrackMouseEvent, 8 ) \ - SYSCALL_ENTRY( 0x01b6, NtUserTrackPopupMenuEx, 48 ) \ - SYSCALL_ENTRY( 0x01b7, NtUserTranslateAccelerator, 24 ) \ - SYSCALL_ENTRY( 0x01b8, NtUserTranslateMessage, 16 ) \ - SYSCALL_ENTRY( 0x01b9, NtUserUnhookWinEvent, 8 ) \ - SYSCALL_ENTRY( 0x01ba, NtUserUnhookWindowsHook, 16 ) \ - SYSCALL_ENTRY( 0x01bb, NtUserUnhookWindowsHookEx, 8 ) \ - SYSCALL_ENTRY( 0x01bc, NtUserUnregisterClass, 24 ) \ - SYSCALL_ENTRY( 0x01bd, NtUserUnregisterHotKey, 16 ) \ - SYSCALL_ENTRY( 0x01be, NtUserUpdateInputContext, 24 ) \ - SYSCALL_ENTRY( 0x01bf, NtUserUpdateLayeredWindow, 80 ) \ - SYSCALL_ENTRY( 0x01c0, NtUserValidateRect, 16 ) \ - SYSCALL_ENTRY( 0x01c1, NtUserValidateRgn, 16 ) \ - SYSCALL_ENTRY( 0x01c2, NtUserVkKeyScanEx, 16 ) \ - SYSCALL_ENTRY( 0x01c3, NtUserWaitForInputIdle, 24 ) \ - SYSCALL_ENTRY( 0x01c4, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x01c5, NtUserWindowFromDC, 8 ) \ - SYSCALL_ENTRY( 0x01c6, NtUserWindowFromPoint, 16 ) \ - SYSCALL_ENTRY( 0x01c7, __wine_get_file_outline_text_metric, 32 ) \ - SYSCALL_ENTRY( 0x01c8, __wine_get_icm_profile, 32 ) + SYSCALL_ENTRY( 0x017f, NtUserSetAdditionalForegroundBoostProcesses, 24 ) \ + SYSCALL_ENTRY( 0x0180, NtUserSetCapture, 8 ) \ + SYSCALL_ENTRY( 0x0181, NtUserSetCaretBlinkTime, 8 ) \ + SYSCALL_ENTRY( 0x0182, NtUserSetCaretPos, 16 ) \ + SYSCALL_ENTRY( 0x0183, NtUserSetClassLong, 32 ) \ + SYSCALL_ENTRY( 0x0184, NtUserSetClassLongPtr, 32 ) \ + SYSCALL_ENTRY( 0x0185, NtUserSetClassWord, 24 ) \ + SYSCALL_ENTRY( 0x0186, NtUserSetClipboardData, 24 ) \ + SYSCALL_ENTRY( 0x0187, NtUserSetClipboardViewer, 8 ) \ + SYSCALL_ENTRY( 0x0188, NtUserSetCursor, 8 ) \ + SYSCALL_ENTRY( 0x0189, NtUserSetCursorIconData, 32 ) \ + SYSCALL_ENTRY( 0x018a, NtUserSetCursorPos, 16 ) \ + SYSCALL_ENTRY( 0x018b, NtUserSetFocus, 8 ) \ + SYSCALL_ENTRY( 0x018c, NtUserSetInternalWindowPos, 32 ) \ + SYSCALL_ENTRY( 0x018d, NtUserSetKeyboardState, 8 ) \ + SYSCALL_ENTRY( 0x018e, NtUserSetLayeredWindowAttributes, 32 ) \ + SYSCALL_ENTRY( 0x018f, NtUserSetMenu, 16 ) \ + SYSCALL_ENTRY( 0x0190, NtUserSetMenuContextHelpId, 16 ) \ + SYSCALL_ENTRY( 0x0191, NtUserSetMenuDefaultItem, 24 ) \ + SYSCALL_ENTRY( 0x0192, NtUserSetObjectInformation, 32 ) \ + SYSCALL_ENTRY( 0x0193, NtUserSetParent, 16 ) \ + SYSCALL_ENTRY( 0x0194, NtUserSetProcessDefaultLayout, 8 ) \ + SYSCALL_ENTRY( 0x0195, NtUserSetProcessDpiAwarenessContext, 16 ) \ + SYSCALL_ENTRY( 0x0196, NtUserSetProcessWindowStation, 8 ) \ + SYSCALL_ENTRY( 0x0197, NtUserSetProgmanWindow, 8 ) \ + SYSCALL_ENTRY( 0x0198, NtUserSetProp, 24 ) \ + SYSCALL_ENTRY( 0x0199, NtUserSetScrollInfo, 32 ) \ + SYSCALL_ENTRY( 0x019a, NtUserSetShellWindowEx, 16 ) \ + SYSCALL_ENTRY( 0x019b, NtUserSetSysColors, 24 ) \ + SYSCALL_ENTRY( 0x019c, NtUserSetSystemMenu, 16 ) \ + SYSCALL_ENTRY( 0x019d, NtUserSetSystemTimer, 24 ) \ + SYSCALL_ENTRY( 0x019e, NtUserSetTaskmanWindow, 8 ) \ + SYSCALL_ENTRY( 0x019f, NtUserSetThreadDesktop, 8 ) \ + SYSCALL_ENTRY( 0x01a0, NtUserSetTimer, 40 ) \ + SYSCALL_ENTRY( 0x01a1, NtUserSetWinEventHook, 64 ) \ + SYSCALL_ENTRY( 0x01a2, NtUserSetWindowContextHelpId, 16 ) \ + SYSCALL_ENTRY( 0x01a3, NtUserSetWindowLong, 32 ) \ + SYSCALL_ENTRY( 0x01a4, NtUserSetWindowLongPtr, 32 ) \ + SYSCALL_ENTRY( 0x01a5, NtUserSetWindowPlacement, 16 ) \ + SYSCALL_ENTRY( 0x01a6, NtUserSetWindowPos, 56 ) \ + SYSCALL_ENTRY( 0x01a7, NtUserSetWindowRgn, 24 ) \ + SYSCALL_ENTRY( 0x01a8, NtUserSetWindowWord, 24 ) \ + SYSCALL_ENTRY( 0x01a9, NtUserSetWindowsHookEx, 48 ) \ + SYSCALL_ENTRY( 0x01aa, NtUserShowCaret, 8 ) \ + SYSCALL_ENTRY( 0x01ab, NtUserShowCursor, 8 ) \ + SYSCALL_ENTRY( 0x01ac, NtUserShowOwnedPopups, 16 ) \ + SYSCALL_ENTRY( 0x01ad, NtUserShowScrollBar, 24 ) \ + SYSCALL_ENTRY( 0x01ae, NtUserShowWindow, 16 ) \ + SYSCALL_ENTRY( 0x01af, NtUserShowWindowAsync, 16 ) \ + SYSCALL_ENTRY( 0x01b0, NtUserSwitchDesktop, 8 ) \ + SYSCALL_ENTRY( 0x01b1, NtUserSystemParametersInfo, 32 ) \ + SYSCALL_ENTRY( 0x01b2, NtUserSystemParametersInfoForDpi, 40 ) \ + SYSCALL_ENTRY( 0x01b3, NtUserThunkedMenuInfo, 16 ) \ + SYSCALL_ENTRY( 0x01b4, NtUserThunkedMenuItemInfo, 48 ) \ + SYSCALL_ENTRY( 0x01b5, NtUserToUnicodeEx, 56 ) \ + SYSCALL_ENTRY( 0x01b6, NtUserTrackMouseEvent, 8 ) \ + SYSCALL_ENTRY( 0x01b7, NtUserTrackPopupMenuEx, 48 ) \ + SYSCALL_ENTRY( 0x01b8, NtUserTranslateAccelerator, 24 ) \ + SYSCALL_ENTRY( 0x01b9, NtUserTranslateMessage, 16 ) \ + SYSCALL_ENTRY( 0x01ba, NtUserUnhookWinEvent, 8 ) \ + SYSCALL_ENTRY( 0x01bb, NtUserUnhookWindowsHook, 16 ) \ + SYSCALL_ENTRY( 0x01bc, NtUserUnhookWindowsHookEx, 8 ) \ + SYSCALL_ENTRY( 0x01bd, NtUserUnregisterClass, 24 ) \ + SYSCALL_ENTRY( 0x01be, NtUserUnregisterHotKey, 16 ) \ + SYSCALL_ENTRY( 0x01bf, NtUserUpdateInputContext, 24 ) \ + SYSCALL_ENTRY( 0x01c0, NtUserUpdateLayeredWindow, 80 ) \ + SYSCALL_ENTRY( 0x01c1, NtUserValidateRect, 16 ) \ + SYSCALL_ENTRY( 0x01c2, NtUserValidateRgn, 16 ) \ + SYSCALL_ENTRY( 0x01c3, NtUserVkKeyScanEx, 16 ) \ + SYSCALL_ENTRY( 0x01c4, NtUserWaitForInputIdle, 24 ) \ + SYSCALL_ENTRY( 0x01c5, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x01c6, NtUserWindowFromDC, 8 ) \ + SYSCALL_ENTRY( 0x01c7, NtUserWindowFromPoint, 16 ) \ + SYSCALL_ENTRY( 0x01c8, __wine_get_file_outline_text_metric, 32 ) \ + SYSCALL_ENTRY( 0x01c9, __wine_get_icm_profile, 32 ) diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index a6763331819..180649b5b09 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1330,7 +1330,7 @@ @ stub NtUserSetActivationFilter @ stub NtUserSetActiveProcessForMonitor @ stdcall -syscall NtUserSetActiveWindow(long) -@ stub NtUserSetAdditionalForegroundBoostProcesses +@ stdcall -syscall NtUserSetAdditionalForegroundBoostProcesses(ptr long ptr) @ stub NtUserSetAppImeLevel @ stub NtUserSetAutoRotation @ stub NtUserSetBridgeWindowChild diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 39637fac51d..d38d25b7d8b 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -4166,6 +4166,14 @@ NTSTATUS WINAPI wow64_NtUserSetActiveWindow( UINT *args ) return HandleToUlong( NtUserSetActiveWindow( hwnd )); }
+NTSTATUS WINAPI wow64_NtUserSetAdditionalForegroundBoostProcesses( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + DWORD count = get_ulong( &args ); + HANDLE *array = get_ptr( &args ); + return NtUserSetAdditionalForegroundBoostProcesses( hwnd, count, array ); +} + NTSTATUS WINAPI wow64_NtUserSetCapture( UINT *args ) { HWND hwnd = get_handle( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index 749a56f3c9e..e148ce17a1a 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -934,6 +934,7 @@ W32KAPI INT WINAPI NtUserScrollWindowEx( HWND hwnd, INT dx, INT dy, const RE W32KAPI HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE palette, WORD force_background ); W32KAPI UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ); W32KAPI HWND WINAPI NtUserSetActiveWindow( HWND hwnd ); +W32KAPI BOOL WINAPI NtUserSetAdditionalForegroundBoostProcesses( HWND hwnd, DWORD count, HANDLE *array ); W32KAPI HWND WINAPI NtUserSetCapture( HWND hwnd ); W32KAPI BOOL WINAPI NtUserSetCaretBlinkTime( unsigned int time ); W32KAPI BOOL WINAPI NtUserSetCaretPos( INT x, INT y );
DWORD is unsigned long on 32bit builds, and unsigned int on 64bit. There is no correct printf format string.
Easiest fix is cast it to unsigned.
(IMO gcc complaining about int/long mismatch on 32bit platforms where those have identical representation is a bug, but we've gotta work with the compilers we have.)
But why then does compilation not fail for other FIXME's where %ld is used as format string for DWORD?
On Tue Mar 18 19:52:43 2025 +0000, Louis Lenders wrote:
But why then does compilation not fail for other FIXME's where %ld is used as format string for DWORD?
Probably because those other FIXMEs are in Windows-side code, where DWORD is always unsigned long. It's only variable on Unix side.
Yes, it's a mess.
If you can find any such FIXME in Unix side code, then I've misread something; do tell.
DWORD is unsigned long on 32bit builds, and unsigned int on 64bit. There is no correct printf format string.
What? No it's not, it's unsigned long everywhere. %lu is correct. (%ld is not really correct, but it works regardless.)
DWORD is unsigned long on 32bit builds, and unsigned int on 64bit. There is no correct printf format string.
What? No it's not, it's unsigned long everywhere. %lu is correct. (%ld is not really correct, but it works regardless.)
Oh, my mistake, this is Unix side code. Yes, we need to cast to unsigned int. Or, perhaps better, define the function with unsigned int instead of DWORD.