From: Namo Nath <nn.git@tuta.io> Introduce a new system call, NtUserSetWindowDwmConfig, to pass Desktop Window Manager (DWM) configuration data from dwmapi down to the user driver. This infrastructure allows passing frame extension margins to the driver, supporting custom opaque region insets (for client-side decorations) and full-window transparency requested via DwmExtendFrameIntoClientArea. - Define NtUserSetWindowDwmConfig in win32u, ntuser.h, and user32.spec. - Add DWM_CONFIG_OPAQUE_REGION flag in winuser.h. - Update dwmapi to import win32u and utilize the new syscall. - Expand user_driver_funcs in gdi_driver.h with pSetWindowDwmConfig. - Implement WOW64 thunk in dlls/wow64win/user.c. --- dlls/dwmapi/Makefile.in | 2 +- dlls/dwmapi/dwmapi_main.c | 11 +- dlls/user32/user32.spec | 1 + dlls/win32u/driver.c | 6 + dlls/win32u/main.c | 5 + dlls/win32u/win32syscalls.h | 402 ++++++++++++++++++------------------ dlls/win32u/win32u.spec | 1 + dlls/win32u/window.c | 15 ++ dlls/wow64win/user.c | 9 + include/ntuser.h | 1 + include/wine/gdi_driver.h | 1 + include/winuser.h | 3 + 12 files changed, 254 insertions(+), 203 deletions(-) diff --git a/dlls/dwmapi/Makefile.in b/dlls/dwmapi/Makefile.in index cf889cb148e..f837e58b439 100644 --- a/dlls/dwmapi/Makefile.in +++ b/dlls/dwmapi/Makefile.in @@ -1,5 +1,5 @@ MODULE = dwmapi.dll -IMPORTS = user32 +IMPORTS = user32 win32u IMPORTLIB = dwmapi VER_FILEDESCRIPTION_STR = "Desktop Window Manager API" diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c index 4b881b4d523..23444fc102c 100644 --- a/dlls/dwmapi/dwmapi_main.c +++ b/dlls/dwmapi/dwmapi_main.c @@ -27,6 +27,7 @@ #include "winbase.h" #include "wingdi.h" #include "winuser.h" +#include "ntuser.h" #include "dwmapi.h" #include "wine/debug.h" @@ -66,9 +67,15 @@ HRESULT WINAPI DwmEnableComposition(UINT uCompositionAction) /********************************************************************** * DwmExtendFrameIntoClientArea (DWMAPI.@) */ -HRESULT WINAPI DwmExtendFrameIntoClientArea(HWND hwnd, const MARGINS* margins) +HRESULT WINAPI DwmExtendFrameIntoClientArea(HWND hwnd, const MARGINS *margins) { - FIXME("(%p, %p) stub\n", hwnd, margins); + if (!margins) return E_INVALIDARG; + + TRACE("%p: margins %d, %d, %d, %d\n", hwnd, + margins->cxLeftWidth, margins->cxRightWidth, + margins->cyTopHeight, margins->cyBottomHeight); + + NtUserSetWindowDwmConfig(hwnd, DWM_CONFIG_OPAQUE_REGION, margins); return S_OK; } diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 0645792a312..5cd83b6846f 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -1051,6 +1051,7 @@ @ stdcall SetKeyboardState(ptr) NtUserSetKeyboardState @ stdcall SetLastErrorEx(long long) @ stdcall SetLayeredWindowAttributes(ptr long long long) NtUserSetLayeredWindowAttributes +@ stdcall SetWindowDwmConfig(ptr long ptr) NtUserSetWindowDwmConfig @ stdcall SetLogonNotifyWindow(long long) # @ stub SetMagnificationDesktopColorEffect # @ stub SetMagnificationDesktopMagnification diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c index 60aba702d1a..25bd18f423c 100644 --- a/dlls/win32u/driver.c +++ b/dlls/win32u/driver.c @@ -826,6 +826,11 @@ static void nulldrv_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE al { } +static BOOL WINAPI nulldrv_SetWindowDwmConfig(HWND hwnd, int command, const void *data) +{ + return FALSE; +} + static void nulldrv_SetParent( HWND hwnd, HWND parent, HWND old_parent ) { } @@ -1291,6 +1296,7 @@ static const struct user_driver_funcs lazy_load_driver = loaderdrv_SetDesktopWindow, nulldrv_ActivateWindow, loaderdrv_SetLayeredWindowAttributes, + nulldrv_SetWindowDwmConfig, nulldrv_SetParent, loaderdrv_SetWindowRgn, nulldrv_SetWindowIcons, diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index 5593eda9aab..e1efa20b878 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -2246,6 +2246,11 @@ BOOL SYSCALL_API NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE SYSCALL_FUNC( NtUserSetLayeredWindowAttributes ); } +BOOL SYSCALL_API NtUserSetWindowDwmConfig( HWND hwnd, LONG command, const void *data ) +{ + SYSCALL_FUNC( NtUserSetWindowDwmConfig ); +} + BOOL SYSCALL_API NtUserSetMenu( HWND hwnd, HMENU menu ) { SYSCALL_FUNC( NtUserSetMenu ); diff --git a/dlls/win32u/win32syscalls.h b/dlls/win32u/win32syscalls.h index 7826afd3fc3..f5c71927cc2 100644 --- a/dlls/win32u/win32syscalls.h +++ b/dlls/win32u/win32syscalls.h @@ -1441,106 +1441,107 @@ SYSCALL_ENTRY( 0x159d, NtUserSetWindowCompositionTransition, 0 ) \ SYSCALL_ENTRY( 0x159e, NtUserSetWindowContextHelpId, 8 ) \ SYSCALL_ENTRY( 0x159f, NtUserSetWindowDisplayAffinity, 0 ) \ - SYSCALL_ENTRY( 0x15a0, NtUserSetWindowFNID, 0 ) \ - SYSCALL_ENTRY( 0x15a1, NtUserSetWindowFeedbackSetting, 0 ) \ - SYSCALL_ENTRY( 0x15a2, NtUserSetWindowGroup, 0 ) \ - SYSCALL_ENTRY( 0x15a3, NtUserSetWindowLong, 16 ) \ - SYSCALL_ENTRY( 0x15a4, NtUserSetWindowLongPtr, 16 ) \ - SYSCALL_ENTRY( 0x15a5, NtUserSetWindowMessageCapability, 0 ) \ - SYSCALL_ENTRY( 0x15a6, NtUserSetWindowPlacement, 8 ) \ - SYSCALL_ENTRY( 0x15a7, NtUserSetWindowPos, 28 ) \ - SYSCALL_ENTRY( 0x15a8, NtUserSetWindowRgn, 12 ) \ - SYSCALL_ENTRY( 0x15a9, NtUserSetWindowRgnEx, 0 ) \ - SYSCALL_ENTRY( 0x15aa, NtUserSetWindowShowState, 0 ) \ - SYSCALL_ENTRY( 0x15ab, NtUserSetWindowState, 0 ) \ - SYSCALL_ENTRY( 0x15ac, NtUserSetWindowStationUser, 0 ) \ - SYSCALL_ENTRY( 0x15ad, NtUserSetWindowWord, 12 ) \ - SYSCALL_ENTRY( 0x15ae, NtUserSetWindowsHookAW, 0 ) \ - SYSCALL_ENTRY( 0x15af, NtUserSetWindowsHookEx, 24 ) \ - SYSCALL_ENTRY( 0x15b0, NtUserShellForegroundBoostProcess, 0 ) \ - SYSCALL_ENTRY( 0x15b1, NtUserShellHandwritingDelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15b2, NtUserShellHandwritingHandleDelegatedInput, 0 ) \ - SYSCALL_ENTRY( 0x15b3, NtUserShellHandwritingUndelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15b4, NtUserShellMigrateWindow, 0 ) \ - SYSCALL_ENTRY( 0x15b5, NtUserShellRegisterHotKey, 0 ) \ - SYSCALL_ENTRY( 0x15b6, NtUserShellSetWindowPos, 0 ) \ - SYSCALL_ENTRY( 0x15b7, NtUserShowCaret, 4 ) \ - SYSCALL_ENTRY( 0x15b8, NtUserShowCursor, 4 ) \ - SYSCALL_ENTRY( 0x15b9, NtUserShowOwnedPopups, 8 ) \ - SYSCALL_ENTRY( 0x15ba, NtUserShowScrollBar, 12 ) \ - SYSCALL_ENTRY( 0x15bb, NtUserShowStartGlass, 0 ) \ - SYSCALL_ENTRY( 0x15bc, NtUserShowSystemCursor, 0 ) \ - SYSCALL_ENTRY( 0x15bd, NtUserShowWindow, 8 ) \ - SYSCALL_ENTRY( 0x15be, NtUserShowWindowAsync, 8 ) \ - SYSCALL_ENTRY( 0x15bf, NtUserShutdownBlockReasonCreate, 0 ) \ - SYSCALL_ENTRY( 0x15c0, NtUserShutdownBlockReasonQuery, 0 ) \ - SYSCALL_ENTRY( 0x15c1, NtUserShutdownReasonDestroy, 0 ) \ - SYSCALL_ENTRY( 0x15c2, NtUserSignalRedirectionStartComplete, 0 ) \ - SYSCALL_ENTRY( 0x15c3, NtUserSlicerControl, 0 ) \ - SYSCALL_ENTRY( 0x15c4, NtUserSoundSentry, 0 ) \ - SYSCALL_ENTRY( 0x15c5, NtUserStopAndEndInertia, 0 ) \ - SYSCALL_ENTRY( 0x15c6, NtUserSuppressWindowActions, 0 ) \ - SYSCALL_ENTRY( 0x15c7, NtUserSuppressWindowDisplayChange, 0 ) \ - SYSCALL_ENTRY( 0x15c8, NtUserSwapMouseButton, 0 ) \ - SYSCALL_ENTRY( 0x15c9, NtUserSwitchDesktop, 4 ) \ - SYSCALL_ENTRY( 0x15ca, NtUserSwitchToThisWindow, 0 ) \ - SYSCALL_ENTRY( 0x15cb, NtUserSystemParametersInfo, 16 ) \ - SYSCALL_ENTRY( 0x15cc, NtUserSystemParametersInfoForDpi, 20 ) \ - SYSCALL_ENTRY( 0x15cd, NtUserTestForInteractiveUser, 0 ) \ - SYSCALL_ENTRY( 0x15ce, NtUserThreadMessageQueueAttached, 0 ) \ - SYSCALL_ENTRY( 0x15cf, NtUserThunkedMenuInfo, 8 ) \ - SYSCALL_ENTRY( 0x15d0, NtUserThunkedMenuItemInfo, 24 ) \ - SYSCALL_ENTRY( 0x15d1, NtUserToUnicodeEx, 28 ) \ - SYSCALL_ENTRY( 0x15d2, NtUserTraceLoggingSendMixedModeTelemetry, 0 ) \ - SYSCALL_ENTRY( 0x15d3, NtUserTrackMouseEvent, 4 ) \ - SYSCALL_ENTRY( 0x15d4, NtUserTrackPopupMenuEx, 24 ) \ - SYSCALL_ENTRY( 0x15d5, NtUserTransformPoint, 0 ) \ - SYSCALL_ENTRY( 0x15d6, NtUserTransformRect, 0 ) \ - SYSCALL_ENTRY( 0x15d7, NtUserTranslateAccelerator, 12 ) \ - SYSCALL_ENTRY( 0x15d8, NtUserTranslateMessage, 8 ) \ - SYSCALL_ENTRY( 0x15d9, NtUserUndelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15da, NtUserUnhookWinEvent, 4 ) \ - SYSCALL_ENTRY( 0x15db, NtUserUnhookWindowsHook, 8 ) \ - SYSCALL_ENTRY( 0x15dc, NtUserUnhookWindowsHookEx, 4 ) \ - SYSCALL_ENTRY( 0x15dd, NtUserUnloadKeyboardLayout, 0 ) \ - SYSCALL_ENTRY( 0x15de, NtUserUnlockWindowStation, 0 ) \ - SYSCALL_ENTRY( 0x15df, NtUserUnregisterClass, 12 ) \ - SYSCALL_ENTRY( 0x15e0, NtUserUnregisterHotKey, 8 ) \ - SYSCALL_ENTRY( 0x15e1, NtUserUnregisterSessionPort, 0 ) \ - SYSCALL_ENTRY( 0x15e2, NtUserUnregisterUserApiHook, 0 ) \ - SYSCALL_ENTRY( 0x15e3, NtUserUpdateClientRect, 0 ) \ - SYSCALL_ENTRY( 0x15e4, NtUserUpdateDefaultDesktopThumbnail, 0 ) \ - SYSCALL_ENTRY( 0x15e5, NtUserUpdateInputContext, 12 ) \ - SYSCALL_ENTRY( 0x15e6, NtUserUpdateInstance, 0 ) \ - SYSCALL_ENTRY( 0x15e7, NtUserUpdateLayeredWindow, 40 ) \ - SYSCALL_ENTRY( 0x15e8, NtUserUpdatePerUserImmEnabling, 0 ) \ - SYSCALL_ENTRY( 0x15e9, NtUserUpdatePerUserSystemParameters, 0 ) \ - SYSCALL_ENTRY( 0x15ea, NtUserUpdateWindow, 0 ) \ - SYSCALL_ENTRY( 0x15eb, NtUserUpdateWindowInputSinkHints, 0 ) \ - SYSCALL_ENTRY( 0x15ec, NtUserUpdateWindowTrackingInfo, 0 ) \ - SYSCALL_ENTRY( 0x15ed, NtUserUpdateWindows, 0 ) \ - SYSCALL_ENTRY( 0x15ee, NtUserUserHandleGrantAccess, 0 ) \ - SYSCALL_ENTRY( 0x15ef, NtUserUserPowerCalloutWorker, 0 ) \ - SYSCALL_ENTRY( 0x15f0, NtUserValidateHandleSecure, 0 ) \ - SYSCALL_ENTRY( 0x15f1, NtUserValidateRect, 8 ) \ - SYSCALL_ENTRY( 0x15f2, NtUserValidateRgn, 8 ) \ - SYSCALL_ENTRY( 0x15f3, NtUserValidateTimerCallback, 0 ) \ - SYSCALL_ENTRY( 0x15f4, NtUserVkKeyScanEx, 8 ) \ - SYSCALL_ENTRY( 0x15f5, NtUserWOWCleanup, 0 ) \ - SYSCALL_ENTRY( 0x15f6, NtUserWOWModuleUnload, 0 ) \ - SYSCALL_ENTRY( 0x15f7, NtUserWaitAvailableMessageEx, 0 ) \ - SYSCALL_ENTRY( 0x15f8, NtUserWaitForInputIdle, 12 ) \ - SYSCALL_ENTRY( 0x15f9, NtUserWaitForMsgAndEvent, 0 ) \ - SYSCALL_ENTRY( 0x15fa, NtUserWaitForRedirectionStartComplete, 0 ) \ - SYSCALL_ENTRY( 0x15fb, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x15fc, NtUserWakeRITForShutdown, 0 ) \ - SYSCALL_ENTRY( 0x15fd, NtUserWindowFromDC, 4 ) \ - SYSCALL_ENTRY( 0x15fe, NtUserWindowFromPhysicalPoint, 0 ) \ - SYSCALL_ENTRY( 0x15ff, NtUserWindowFromPoint, 8 ) \ - SYSCALL_ENTRY( 0x1600, NtUserYieldTask, 0 ) \ - SYSCALL_ENTRY( 0x1601, NtUserZapActiveAndFocus, 0 ) \ - SYSCALL_ENTRY( 0x1602, NtValidateCompositionSurfaceHandle, 0 ) \ - SYSCALL_ENTRY( 0x1603, NtVisualCaptureBits, 0 ) + SYSCALL_ENTRY( 0x15a0, NtUserSetWindowDwmConfig, 12 ) \ + SYSCALL_ENTRY( 0x15a1, NtUserSetWindowFNID, 0 ) \ + SYSCALL_ENTRY( 0x15a2, NtUserSetWindowFeedbackSetting, 0 ) \ + SYSCALL_ENTRY( 0x15a3, NtUserSetWindowGroup, 0 ) \ + SYSCALL_ENTRY( 0x15a4, NtUserSetWindowLong, 16 ) \ + SYSCALL_ENTRY( 0x15a5, NtUserSetWindowLongPtr, 16 ) \ + SYSCALL_ENTRY( 0x15a6, NtUserSetWindowMessageCapability, 0 ) \ + SYSCALL_ENTRY( 0x15a7, NtUserSetWindowPlacement, 8 ) \ + SYSCALL_ENTRY( 0x15a8, NtUserSetWindowPos, 28 ) \ + SYSCALL_ENTRY( 0x15a9, NtUserSetWindowRgn, 12 ) \ + SYSCALL_ENTRY( 0x15aa, NtUserSetWindowRgnEx, 0 ) \ + SYSCALL_ENTRY( 0x15ab, NtUserSetWindowShowState, 0 ) \ + SYSCALL_ENTRY( 0x15ac, NtUserSetWindowState, 0 ) \ + SYSCALL_ENTRY( 0x15ad, NtUserSetWindowStationUser, 0 ) \ + SYSCALL_ENTRY( 0x15ae, NtUserSetWindowWord, 12 ) \ + SYSCALL_ENTRY( 0x15af, NtUserSetWindowsHookAW, 0 ) \ + SYSCALL_ENTRY( 0x15b0, NtUserSetWindowsHookEx, 24 ) \ + SYSCALL_ENTRY( 0x15b1, NtUserShellForegroundBoostProcess, 0 ) \ + SYSCALL_ENTRY( 0x15b2, NtUserShellHandwritingDelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15b3, NtUserShellHandwritingHandleDelegatedInput, 0 ) \ + SYSCALL_ENTRY( 0x15b4, NtUserShellHandwritingUndelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15b5, NtUserShellMigrateWindow, 0 ) \ + SYSCALL_ENTRY( 0x15b6, NtUserShellRegisterHotKey, 0 ) \ + SYSCALL_ENTRY( 0x15b7, NtUserShellSetWindowPos, 0 ) \ + SYSCALL_ENTRY( 0x15b8, NtUserShowCaret, 4 ) \ + SYSCALL_ENTRY( 0x15b9, NtUserShowCursor, 4 ) \ + SYSCALL_ENTRY( 0x15ba, NtUserShowOwnedPopups, 8 ) \ + SYSCALL_ENTRY( 0x15bb, NtUserShowScrollBar, 12 ) \ + SYSCALL_ENTRY( 0x15bc, NtUserShowStartGlass, 0 ) \ + SYSCALL_ENTRY( 0x15bd, NtUserShowSystemCursor, 0 ) \ + SYSCALL_ENTRY( 0x15be, NtUserShowWindow, 8 ) \ + SYSCALL_ENTRY( 0x15bf, NtUserShowWindowAsync, 8 ) \ + SYSCALL_ENTRY( 0x15c0, NtUserShutdownBlockReasonCreate, 0 ) \ + SYSCALL_ENTRY( 0x15c1, NtUserShutdownBlockReasonQuery, 0 ) \ + SYSCALL_ENTRY( 0x15c2, NtUserShutdownReasonDestroy, 0 ) \ + SYSCALL_ENTRY( 0x15c3, NtUserSignalRedirectionStartComplete, 0 ) \ + SYSCALL_ENTRY( 0x15c4, NtUserSlicerControl, 0 ) \ + SYSCALL_ENTRY( 0x15c5, NtUserSoundSentry, 0 ) \ + SYSCALL_ENTRY( 0x15c6, NtUserStopAndEndInertia, 0 ) \ + SYSCALL_ENTRY( 0x15c7, NtUserSuppressWindowActions, 0 ) \ + SYSCALL_ENTRY( 0x15c8, NtUserSuppressWindowDisplayChange, 0 ) \ + SYSCALL_ENTRY( 0x15c9, NtUserSwapMouseButton, 0 ) \ + SYSCALL_ENTRY( 0x15ca, NtUserSwitchDesktop, 4 ) \ + SYSCALL_ENTRY( 0x15cb, NtUserSwitchToThisWindow, 0 ) \ + SYSCALL_ENTRY( 0x15cc, NtUserSystemParametersInfo, 16 ) \ + SYSCALL_ENTRY( 0x15cd, NtUserSystemParametersInfoForDpi, 20 ) \ + SYSCALL_ENTRY( 0x15ce, NtUserTestForInteractiveUser, 0 ) \ + SYSCALL_ENTRY( 0x15cf, NtUserThreadMessageQueueAttached, 0 ) \ + SYSCALL_ENTRY( 0x15d0, NtUserThunkedMenuInfo, 8 ) \ + SYSCALL_ENTRY( 0x15d1, NtUserThunkedMenuItemInfo, 24 ) \ + SYSCALL_ENTRY( 0x15d2, NtUserToUnicodeEx, 28 ) \ + SYSCALL_ENTRY( 0x15d3, NtUserTraceLoggingSendMixedModeTelemetry, 0 ) \ + SYSCALL_ENTRY( 0x15d4, NtUserTrackMouseEvent, 4 ) \ + SYSCALL_ENTRY( 0x15d5, NtUserTrackPopupMenuEx, 24 ) \ + SYSCALL_ENTRY( 0x15d6, NtUserTransformPoint, 0 ) \ + SYSCALL_ENTRY( 0x15d7, NtUserTransformRect, 0 ) \ + SYSCALL_ENTRY( 0x15d8, NtUserTranslateAccelerator, 12 ) \ + SYSCALL_ENTRY( 0x15d9, NtUserTranslateMessage, 8 ) \ + SYSCALL_ENTRY( 0x15da, NtUserUndelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15db, NtUserUnhookWinEvent, 4 ) \ + SYSCALL_ENTRY( 0x15dc, NtUserUnhookWindowsHook, 8 ) \ + SYSCALL_ENTRY( 0x15dd, NtUserUnhookWindowsHookEx, 4 ) \ + SYSCALL_ENTRY( 0x15de, NtUserUnloadKeyboardLayout, 0 ) \ + SYSCALL_ENTRY( 0x15df, NtUserUnlockWindowStation, 0 ) \ + SYSCALL_ENTRY( 0x15e0, NtUserUnregisterClass, 12 ) \ + SYSCALL_ENTRY( 0x15e1, NtUserUnregisterHotKey, 8 ) \ + SYSCALL_ENTRY( 0x15e2, NtUserUnregisterSessionPort, 0 ) \ + SYSCALL_ENTRY( 0x15e3, NtUserUnregisterUserApiHook, 0 ) \ + SYSCALL_ENTRY( 0x15e4, NtUserUpdateClientRect, 0 ) \ + SYSCALL_ENTRY( 0x15e5, NtUserUpdateDefaultDesktopThumbnail, 0 ) \ + SYSCALL_ENTRY( 0x15e6, NtUserUpdateInputContext, 12 ) \ + SYSCALL_ENTRY( 0x15e7, NtUserUpdateInstance, 0 ) \ + SYSCALL_ENTRY( 0x15e8, NtUserUpdateLayeredWindow, 40 ) \ + SYSCALL_ENTRY( 0x15e9, NtUserUpdatePerUserImmEnabling, 0 ) \ + SYSCALL_ENTRY( 0x15ea, NtUserUpdatePerUserSystemParameters, 0 ) \ + SYSCALL_ENTRY( 0x15eb, NtUserUpdateWindow, 0 ) \ + SYSCALL_ENTRY( 0x15ec, NtUserUpdateWindowInputSinkHints, 0 ) \ + SYSCALL_ENTRY( 0x15ed, NtUserUpdateWindowTrackingInfo, 0 ) \ + SYSCALL_ENTRY( 0x15ee, NtUserUpdateWindows, 0 ) \ + SYSCALL_ENTRY( 0x15ef, NtUserUserHandleGrantAccess, 0 ) \ + SYSCALL_ENTRY( 0x15f0, NtUserUserPowerCalloutWorker, 0 ) \ + SYSCALL_ENTRY( 0x15f1, NtUserValidateHandleSecure, 0 ) \ + SYSCALL_ENTRY( 0x15f2, NtUserValidateRect, 8 ) \ + SYSCALL_ENTRY( 0x15f3, NtUserValidateRgn, 8 ) \ + SYSCALL_ENTRY( 0x15f4, NtUserValidateTimerCallback, 0 ) \ + SYSCALL_ENTRY( 0x15f5, NtUserVkKeyScanEx, 8 ) \ + SYSCALL_ENTRY( 0x15f6, NtUserWOWCleanup, 0 ) \ + SYSCALL_ENTRY( 0x15f7, NtUserWOWModuleUnload, 0 ) \ + SYSCALL_ENTRY( 0x15f8, NtUserWaitAvailableMessageEx, 0 ) \ + SYSCALL_ENTRY( 0x15f9, NtUserWaitForInputIdle, 12 ) \ + SYSCALL_ENTRY( 0x15fa, NtUserWaitForMsgAndEvent, 0 ) \ + SYSCALL_ENTRY( 0x15fb, NtUserWaitForRedirectionStartComplete, 0 ) \ + SYSCALL_ENTRY( 0x15fc, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x15fd, NtUserWakeRITForShutdown, 0 ) \ + SYSCALL_ENTRY( 0x15fe, NtUserWindowFromDC, 4 ) \ + SYSCALL_ENTRY( 0x15ff, NtUserWindowFromPhysicalPoint, 0 ) \ + SYSCALL_ENTRY( 0x1600, NtUserWindowFromPoint, 8 ) \ + SYSCALL_ENTRY( 0x1601, NtUserYieldTask, 0 ) \ + SYSCALL_ENTRY( 0x1602, NtUserZapActiveAndFocus, 0 ) \ + SYSCALL_ENTRY( 0x1603, NtValidateCompositionSurfaceHandle, 0 ) \ + SYSCALL_ENTRY( 0x1604, NtVisualCaptureBits, 0 ) #ifdef _WIN64 #define ALL_SYSCALLS \ SYSCALL_ENTRY( 0x1000, NtBindCompositionSurface, 0 ) \ @@ -2983,106 +2984,107 @@ SYSCALL_ENTRY( 0x159d, NtUserSetWindowCompositionTransition, 0 ) \ SYSCALL_ENTRY( 0x159e, NtUserSetWindowContextHelpId, 16 ) \ SYSCALL_ENTRY( 0x159f, NtUserSetWindowDisplayAffinity, 0 ) \ - SYSCALL_ENTRY( 0x15a0, NtUserSetWindowFNID, 0 ) \ - SYSCALL_ENTRY( 0x15a1, NtUserSetWindowFeedbackSetting, 0 ) \ - SYSCALL_ENTRY( 0x15a2, NtUserSetWindowGroup, 0 ) \ - SYSCALL_ENTRY( 0x15a3, NtUserSetWindowLong, 32 ) \ - SYSCALL_ENTRY( 0x15a4, NtUserSetWindowLongPtr, 32 ) \ - SYSCALL_ENTRY( 0x15a5, NtUserSetWindowMessageCapability, 0 ) \ - SYSCALL_ENTRY( 0x15a6, NtUserSetWindowPlacement, 16 ) \ - SYSCALL_ENTRY( 0x15a7, NtUserSetWindowPos, 56 ) \ - SYSCALL_ENTRY( 0x15a8, NtUserSetWindowRgn, 24 ) \ - SYSCALL_ENTRY( 0x15a9, NtUserSetWindowRgnEx, 0 ) \ - SYSCALL_ENTRY( 0x15aa, NtUserSetWindowShowState, 0 ) \ - SYSCALL_ENTRY( 0x15ab, NtUserSetWindowState, 0 ) \ - SYSCALL_ENTRY( 0x15ac, NtUserSetWindowStationUser, 0 ) \ - SYSCALL_ENTRY( 0x15ad, NtUserSetWindowWord, 24 ) \ - SYSCALL_ENTRY( 0x15ae, NtUserSetWindowsHookAW, 0 ) \ - SYSCALL_ENTRY( 0x15af, NtUserSetWindowsHookEx, 48 ) \ - SYSCALL_ENTRY( 0x15b0, NtUserShellForegroundBoostProcess, 0 ) \ - SYSCALL_ENTRY( 0x15b1, NtUserShellHandwritingDelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15b2, NtUserShellHandwritingHandleDelegatedInput, 0 ) \ - SYSCALL_ENTRY( 0x15b3, NtUserShellHandwritingUndelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15b4, NtUserShellMigrateWindow, 0 ) \ - SYSCALL_ENTRY( 0x15b5, NtUserShellRegisterHotKey, 0 ) \ - SYSCALL_ENTRY( 0x15b6, NtUserShellSetWindowPos, 0 ) \ - SYSCALL_ENTRY( 0x15b7, NtUserShowCaret, 8 ) \ - SYSCALL_ENTRY( 0x15b8, NtUserShowCursor, 8 ) \ - SYSCALL_ENTRY( 0x15b9, NtUserShowOwnedPopups, 16 ) \ - SYSCALL_ENTRY( 0x15ba, NtUserShowScrollBar, 24 ) \ - SYSCALL_ENTRY( 0x15bb, NtUserShowStartGlass, 0 ) \ - SYSCALL_ENTRY( 0x15bc, NtUserShowSystemCursor, 0 ) \ - SYSCALL_ENTRY( 0x15bd, NtUserShowWindow, 16 ) \ - SYSCALL_ENTRY( 0x15be, NtUserShowWindowAsync, 16 ) \ - SYSCALL_ENTRY( 0x15bf, NtUserShutdownBlockReasonCreate, 0 ) \ - SYSCALL_ENTRY( 0x15c0, NtUserShutdownBlockReasonQuery, 0 ) \ - SYSCALL_ENTRY( 0x15c1, NtUserShutdownReasonDestroy, 0 ) \ - SYSCALL_ENTRY( 0x15c2, NtUserSignalRedirectionStartComplete, 0 ) \ - SYSCALL_ENTRY( 0x15c3, NtUserSlicerControl, 0 ) \ - SYSCALL_ENTRY( 0x15c4, NtUserSoundSentry, 0 ) \ - SYSCALL_ENTRY( 0x15c5, NtUserStopAndEndInertia, 0 ) \ - SYSCALL_ENTRY( 0x15c6, NtUserSuppressWindowActions, 0 ) \ - SYSCALL_ENTRY( 0x15c7, NtUserSuppressWindowDisplayChange, 0 ) \ - SYSCALL_ENTRY( 0x15c8, NtUserSwapMouseButton, 0 ) \ - SYSCALL_ENTRY( 0x15c9, NtUserSwitchDesktop, 8 ) \ - SYSCALL_ENTRY( 0x15ca, NtUserSwitchToThisWindow, 0 ) \ - SYSCALL_ENTRY( 0x15cb, NtUserSystemParametersInfo, 32 ) \ - SYSCALL_ENTRY( 0x15cc, NtUserSystemParametersInfoForDpi, 40 ) \ - SYSCALL_ENTRY( 0x15cd, NtUserTestForInteractiveUser, 0 ) \ - SYSCALL_ENTRY( 0x15ce, NtUserThreadMessageQueueAttached, 0 ) \ - SYSCALL_ENTRY( 0x15cf, NtUserThunkedMenuInfo, 16 ) \ - SYSCALL_ENTRY( 0x15d0, NtUserThunkedMenuItemInfo, 48 ) \ - SYSCALL_ENTRY( 0x15d1, NtUserToUnicodeEx, 56 ) \ - SYSCALL_ENTRY( 0x15d2, NtUserTraceLoggingSendMixedModeTelemetry, 0 ) \ - SYSCALL_ENTRY( 0x15d3, NtUserTrackMouseEvent, 8 ) \ - SYSCALL_ENTRY( 0x15d4, NtUserTrackPopupMenuEx, 48 ) \ - SYSCALL_ENTRY( 0x15d5, NtUserTransformPoint, 0 ) \ - SYSCALL_ENTRY( 0x15d6, NtUserTransformRect, 0 ) \ - SYSCALL_ENTRY( 0x15d7, NtUserTranslateAccelerator, 24 ) \ - SYSCALL_ENTRY( 0x15d8, NtUserTranslateMessage, 16 ) \ - SYSCALL_ENTRY( 0x15d9, NtUserUndelegateInput, 0 ) \ - SYSCALL_ENTRY( 0x15da, NtUserUnhookWinEvent, 8 ) \ - SYSCALL_ENTRY( 0x15db, NtUserUnhookWindowsHook, 16 ) \ - SYSCALL_ENTRY( 0x15dc, NtUserUnhookWindowsHookEx, 8 ) \ - SYSCALL_ENTRY( 0x15dd, NtUserUnloadKeyboardLayout, 0 ) \ - SYSCALL_ENTRY( 0x15de, NtUserUnlockWindowStation, 0 ) \ - SYSCALL_ENTRY( 0x15df, NtUserUnregisterClass, 24 ) \ - SYSCALL_ENTRY( 0x15e0, NtUserUnregisterHotKey, 16 ) \ - SYSCALL_ENTRY( 0x15e1, NtUserUnregisterSessionPort, 0 ) \ - SYSCALL_ENTRY( 0x15e2, NtUserUnregisterUserApiHook, 0 ) \ - SYSCALL_ENTRY( 0x15e3, NtUserUpdateClientRect, 0 ) \ - SYSCALL_ENTRY( 0x15e4, NtUserUpdateDefaultDesktopThumbnail, 0 ) \ - SYSCALL_ENTRY( 0x15e5, NtUserUpdateInputContext, 24 ) \ - SYSCALL_ENTRY( 0x15e6, NtUserUpdateInstance, 0 ) \ - SYSCALL_ENTRY( 0x15e7, NtUserUpdateLayeredWindow, 80 ) \ - SYSCALL_ENTRY( 0x15e8, NtUserUpdatePerUserImmEnabling, 0 ) \ - SYSCALL_ENTRY( 0x15e9, NtUserUpdatePerUserSystemParameters, 0 ) \ - SYSCALL_ENTRY( 0x15ea, NtUserUpdateWindow, 0 ) \ - SYSCALL_ENTRY( 0x15eb, NtUserUpdateWindowInputSinkHints, 0 ) \ - SYSCALL_ENTRY( 0x15ec, NtUserUpdateWindowTrackingInfo, 0 ) \ - SYSCALL_ENTRY( 0x15ed, NtUserUpdateWindows, 0 ) \ - SYSCALL_ENTRY( 0x15ee, NtUserUserHandleGrantAccess, 0 ) \ - SYSCALL_ENTRY( 0x15ef, NtUserUserPowerCalloutWorker, 0 ) \ - SYSCALL_ENTRY( 0x15f0, NtUserValidateHandleSecure, 0 ) \ - SYSCALL_ENTRY( 0x15f1, NtUserValidateRect, 16 ) \ - SYSCALL_ENTRY( 0x15f2, NtUserValidateRgn, 16 ) \ - SYSCALL_ENTRY( 0x15f3, NtUserValidateTimerCallback, 0 ) \ - SYSCALL_ENTRY( 0x15f4, NtUserVkKeyScanEx, 16 ) \ - SYSCALL_ENTRY( 0x15f5, NtUserWOWCleanup, 0 ) \ - SYSCALL_ENTRY( 0x15f6, NtUserWOWModuleUnload, 0 ) \ - SYSCALL_ENTRY( 0x15f7, NtUserWaitAvailableMessageEx, 0 ) \ - SYSCALL_ENTRY( 0x15f8, NtUserWaitForInputIdle, 24 ) \ - SYSCALL_ENTRY( 0x15f9, NtUserWaitForMsgAndEvent, 0 ) \ - SYSCALL_ENTRY( 0x15fa, NtUserWaitForRedirectionStartComplete, 0 ) \ - SYSCALL_ENTRY( 0x15fb, NtUserWaitMessage, 0 ) \ - SYSCALL_ENTRY( 0x15fc, NtUserWakeRITForShutdown, 0 ) \ - SYSCALL_ENTRY( 0x15fd, NtUserWindowFromDC, 8 ) \ - SYSCALL_ENTRY( 0x15fe, NtUserWindowFromPhysicalPoint, 0 ) \ - SYSCALL_ENTRY( 0x15ff, NtUserWindowFromPoint, 16 ) \ - SYSCALL_ENTRY( 0x1600, NtUserYieldTask, 0 ) \ - SYSCALL_ENTRY( 0x1601, NtUserZapActiveAndFocus, 0 ) \ - SYSCALL_ENTRY( 0x1602, NtValidateCompositionSurfaceHandle, 0 ) \ - SYSCALL_ENTRY( 0x1603, NtVisualCaptureBits, 0 ) + SYSCALL_ENTRY( 0x15a0, NtUserSetWindowDwmConfig, 24 ) \ + SYSCALL_ENTRY( 0x15a1, NtUserSetWindowFNID, 0 ) \ + SYSCALL_ENTRY( 0x15a2, NtUserSetWindowFeedbackSetting, 0 ) \ + SYSCALL_ENTRY( 0x15a3, NtUserSetWindowGroup, 0 ) \ + SYSCALL_ENTRY( 0x15a4, NtUserSetWindowLong, 32 ) \ + SYSCALL_ENTRY( 0x15a5, NtUserSetWindowLongPtr, 32 ) \ + SYSCALL_ENTRY( 0x15a6, NtUserSetWindowMessageCapability, 0 ) \ + SYSCALL_ENTRY( 0x15a7, NtUserSetWindowPlacement, 16 ) \ + SYSCALL_ENTRY( 0x15a8, NtUserSetWindowPos, 56 ) \ + SYSCALL_ENTRY( 0x15a9, NtUserSetWindowRgn, 24 ) \ + SYSCALL_ENTRY( 0x15aa, NtUserSetWindowRgnEx, 0 ) \ + SYSCALL_ENTRY( 0x15ab, NtUserSetWindowShowState, 0 ) \ + SYSCALL_ENTRY( 0x15ac, NtUserSetWindowState, 0 ) \ + SYSCALL_ENTRY( 0x15ad, NtUserSetWindowStationUser, 0 ) \ + SYSCALL_ENTRY( 0x15ae, NtUserSetWindowWord, 24 ) \ + SYSCALL_ENTRY( 0x15af, NtUserSetWindowsHookAW, 0 ) \ + SYSCALL_ENTRY( 0x15b0, NtUserSetWindowsHookEx, 48 ) \ + SYSCALL_ENTRY( 0x15b1, NtUserShellForegroundBoostProcess, 0 ) \ + SYSCALL_ENTRY( 0x15b2, NtUserShellHandwritingDelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15b3, NtUserShellHandwritingHandleDelegatedInput, 0 ) \ + SYSCALL_ENTRY( 0x15b4, NtUserShellHandwritingUndelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15b5, NtUserShellMigrateWindow, 0 ) \ + SYSCALL_ENTRY( 0x15b6, NtUserShellRegisterHotKey, 0 ) \ + SYSCALL_ENTRY( 0x15b7, NtUserShellSetWindowPos, 0 ) \ + SYSCALL_ENTRY( 0x15b8, NtUserShowCaret, 8 ) \ + SYSCALL_ENTRY( 0x15b9, NtUserShowCursor, 8 ) \ + SYSCALL_ENTRY( 0x15ba, NtUserShowOwnedPopups, 16 ) \ + SYSCALL_ENTRY( 0x15bb, NtUserShowScrollBar, 24 ) \ + SYSCALL_ENTRY( 0x15bc, NtUserShowStartGlass, 0 ) \ + SYSCALL_ENTRY( 0x15bd, NtUserShowSystemCursor, 0 ) \ + SYSCALL_ENTRY( 0x15be, NtUserShowWindow, 16 ) \ + SYSCALL_ENTRY( 0x15bf, NtUserShowWindowAsync, 16 ) \ + SYSCALL_ENTRY( 0x15c0, NtUserShutdownBlockReasonCreate, 0 ) \ + SYSCALL_ENTRY( 0x15c1, NtUserShutdownBlockReasonQuery, 0 ) \ + SYSCALL_ENTRY( 0x15c2, NtUserShutdownReasonDestroy, 0 ) \ + SYSCALL_ENTRY( 0x15c3, NtUserSignalRedirectionStartComplete, 0 ) \ + SYSCALL_ENTRY( 0x15c4, NtUserSlicerControl, 0 ) \ + SYSCALL_ENTRY( 0x15c5, NtUserSoundSentry, 0 ) \ + SYSCALL_ENTRY( 0x15c6, NtUserStopAndEndInertia, 0 ) \ + SYSCALL_ENTRY( 0x15c7, NtUserSuppressWindowActions, 0 ) \ + SYSCALL_ENTRY( 0x15c8, NtUserSuppressWindowDisplayChange, 0 ) \ + SYSCALL_ENTRY( 0x15c9, NtUserSwapMouseButton, 0 ) \ + SYSCALL_ENTRY( 0x15ca, NtUserSwitchDesktop, 8 ) \ + SYSCALL_ENTRY( 0x15cb, NtUserSwitchToThisWindow, 0 ) \ + SYSCALL_ENTRY( 0x15cc, NtUserSystemParametersInfo, 32 ) \ + SYSCALL_ENTRY( 0x15cd, NtUserSystemParametersInfoForDpi, 40 ) \ + SYSCALL_ENTRY( 0x15ce, NtUserTestForInteractiveUser, 0 ) \ + SYSCALL_ENTRY( 0x15cf, NtUserThreadMessageQueueAttached, 0 ) \ + SYSCALL_ENTRY( 0x15d0, NtUserThunkedMenuInfo, 16 ) \ + SYSCALL_ENTRY( 0x15d1, NtUserThunkedMenuItemInfo, 48 ) \ + SYSCALL_ENTRY( 0x15d2, NtUserToUnicodeEx, 56 ) \ + SYSCALL_ENTRY( 0x15d3, NtUserTraceLoggingSendMixedModeTelemetry, 0 ) \ + SYSCALL_ENTRY( 0x15d4, NtUserTrackMouseEvent, 8 ) \ + SYSCALL_ENTRY( 0x15d5, NtUserTrackPopupMenuEx, 48 ) \ + SYSCALL_ENTRY( 0x15d6, NtUserTransformPoint, 0 ) \ + SYSCALL_ENTRY( 0x15d7, NtUserTransformRect, 0 ) \ + SYSCALL_ENTRY( 0x15d8, NtUserTranslateAccelerator, 24 ) \ + SYSCALL_ENTRY( 0x15d9, NtUserTranslateMessage, 16 ) \ + SYSCALL_ENTRY( 0x15da, NtUserUndelegateInput, 0 ) \ + SYSCALL_ENTRY( 0x15db, NtUserUnhookWinEvent, 8 ) \ + SYSCALL_ENTRY( 0x15dc, NtUserUnhookWindowsHook, 16 ) \ + SYSCALL_ENTRY( 0x15dd, NtUserUnhookWindowsHookEx, 8 ) \ + SYSCALL_ENTRY( 0x15de, NtUserUnloadKeyboardLayout, 0 ) \ + SYSCALL_ENTRY( 0x15df, NtUserUnlockWindowStation, 0 ) \ + SYSCALL_ENTRY( 0x15e0, NtUserUnregisterClass, 24 ) \ + SYSCALL_ENTRY( 0x15e1, NtUserUnregisterHotKey, 16 ) \ + SYSCALL_ENTRY( 0x15e2, NtUserUnregisterSessionPort, 0 ) \ + SYSCALL_ENTRY( 0x15e3, NtUserUnregisterUserApiHook, 0 ) \ + SYSCALL_ENTRY( 0x15e4, NtUserUpdateClientRect, 0 ) \ + SYSCALL_ENTRY( 0x15e5, NtUserUpdateDefaultDesktopThumbnail, 0 ) \ + SYSCALL_ENTRY( 0x15e6, NtUserUpdateInputContext, 24 ) \ + SYSCALL_ENTRY( 0x15e7, NtUserUpdateInstance, 0 ) \ + SYSCALL_ENTRY( 0x15e8, NtUserUpdateLayeredWindow, 80 ) \ + SYSCALL_ENTRY( 0x15e9, NtUserUpdatePerUserImmEnabling, 0 ) \ + SYSCALL_ENTRY( 0x15ea, NtUserUpdatePerUserSystemParameters, 0 ) \ + SYSCALL_ENTRY( 0x15eb, NtUserUpdateWindow, 0 ) \ + SYSCALL_ENTRY( 0x15ec, NtUserUpdateWindowInputSinkHints, 0 ) \ + SYSCALL_ENTRY( 0x15ed, NtUserUpdateWindowTrackingInfo, 0 ) \ + SYSCALL_ENTRY( 0x15ee, NtUserUpdateWindows, 0 ) \ + SYSCALL_ENTRY( 0x15ef, NtUserUserHandleGrantAccess, 0 ) \ + SYSCALL_ENTRY( 0x15f0, NtUserUserPowerCalloutWorker, 0 ) \ + SYSCALL_ENTRY( 0x15f1, NtUserValidateHandleSecure, 0 ) \ + SYSCALL_ENTRY( 0x15f2, NtUserValidateRect, 16 ) \ + SYSCALL_ENTRY( 0x15f3, NtUserValidateRgn, 16 ) \ + SYSCALL_ENTRY( 0x15f4, NtUserValidateTimerCallback, 0 ) \ + SYSCALL_ENTRY( 0x15f5, NtUserVkKeyScanEx, 16 ) \ + SYSCALL_ENTRY( 0x15f6, NtUserWOWCleanup, 0 ) \ + SYSCALL_ENTRY( 0x15f7, NtUserWOWModuleUnload, 0 ) \ + SYSCALL_ENTRY( 0x15f8, NtUserWaitAvailableMessageEx, 0 ) \ + SYSCALL_ENTRY( 0x15f9, NtUserWaitForInputIdle, 24 ) \ + SYSCALL_ENTRY( 0x15fa, NtUserWaitForMsgAndEvent, 0 ) \ + SYSCALL_ENTRY( 0x15fb, NtUserWaitForRedirectionStartComplete, 0 ) \ + SYSCALL_ENTRY( 0x15fc, NtUserWaitMessage, 0 ) \ + SYSCALL_ENTRY( 0x15fd, NtUserWakeRITForShutdown, 0 ) \ + SYSCALL_ENTRY( 0x15fe, NtUserWindowFromDC, 8 ) \ + SYSCALL_ENTRY( 0x15ff, NtUserWindowFromPhysicalPoint, 0 ) \ + SYSCALL_ENTRY( 0x1600, NtUserWindowFromPoint, 16 ) \ + SYSCALL_ENTRY( 0x1601, NtUserYieldTask, 0 ) \ + SYSCALL_ENTRY( 0x1602, NtUserZapActiveAndFocus, 0 ) \ + SYSCALL_ENTRY( 0x1603, NtValidateCompositionSurfaceHandle, 0 ) \ + SYSCALL_ENTRY( 0x1604, NtVisualCaptureBits, 0 ) #else #define ALL_SYSCALLS ALL_SYSCALLS32 #endif diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 66e8541d915..01698e49c46 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1382,6 +1382,7 @@ @ stdcall -syscall NtUserSetInternalWindowPos(long long ptr ptr) @ stdcall -syscall NtUserSetKeyboardState(ptr) @ stdcall -syscall NtUserSetLayeredWindowAttributes(ptr long long long) +@ stdcall -syscall NtUserSetWindowDwmConfig(ptr long ptr) @ stub -syscall NtUserSetMagnificationDesktopMagnifierOffsetsDWMUpdated @ stub -syscall NtUserSetManipulationInputTarget @ stdcall -syscall NtUserSetMenu(long long) diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 61d447e9f32..d573fbc1305 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -2552,6 +2552,21 @@ BOOL WINAPI NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph return ret; } +/***************************************************************************** + * NtUserSetWindowDwmConfig (win32u.@) + */ +BOOL WINAPI NtUserSetWindowDwmConfig( HWND hwnd, LONG command, const void *data ) +{ + TRACE( "(%p, %d, %p)\n", hwnd, (int)command, data ); + + if (user_driver && user_driver->pSetWindowDwmConfig) + { + return user_driver->pSetWindowDwmConfig( hwnd, command, data ); + } + + return FALSE; +} + /***************************************************************************** * UpdateLayeredWindow (win32u.@) */ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index e5c8840c317..027c020c161 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -4446,6 +4446,15 @@ NTSTATUS WINAPI wow64_NtUserSetLayeredWindowAttributes( UINT *args ) return NtUserSetLayeredWindowAttributes( hwnd, key, alpha, flags ); } +NTSTATUS WINAPI wow64_NtUserSetWindowDwmConfig( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + LONG command = get_ulong( &args ); + const void *data = get_ptr( &args ); + + return NtUserSetWindowDwmConfig( hwnd, command, data ); +} + NTSTATUS WINAPI wow64_NtUserSetMenu( UINT *args ) { HWND hwnd = get_handle( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index ce1b18fdfd9..1d170a797c0 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -998,6 +998,7 @@ W32KAPI BOOL WINAPI NtUserSetForegroundWindow( HWND hwnd ); W32KAPI void WINAPI NtUserSetInternalWindowPos( HWND hwnd, UINT cmd, RECT *rect, POINT *pt ); W32KAPI BOOL WINAPI NtUserSetKeyboardState( BYTE *state ); W32KAPI BOOL WINAPI NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ); +W32KAPI BOOL WINAPI NtUserSetWindowDwmConfig( HWND hwnd, LONG command, const void *data ); W32KAPI BOOL WINAPI NtUserSetMenu( HWND hwnd, HMENU menu ); W32KAPI BOOL WINAPI NtUserSetMenuContextHelpId( HMENU handle, DWORD id ); W32KAPI BOOL WINAPI NtUserSetMenuDefaultItem( HMENU handle, UINT item, UINT bypos ); diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h index f6390bce878..c472b896976 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -408,6 +408,7 @@ struct user_driver_funcs void (*pSetDesktopWindow)(HWND); void (*pActivateWindow)(HWND,HWND); void (*pSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD); + BOOL (*pSetWindowDwmConfig)(HWND,INT,const void *); void (*pSetParent)(HWND,HWND,HWND); void (*pSetWindowRgn)(HWND,HRGN,BOOL); void (*pSetWindowIcons)(HWND,HICON,const ICONINFO*,HICON,const ICONINFO*); diff --git a/include/winuser.h b/include/winuser.h index 32b07b387a1..4039e0f47c8 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -2730,6 +2730,9 @@ typedef struct { #define LWA_COLORKEY 0x00000001 #define LWA_ALPHA 0x00000002 +/* SetWindowDwmConfig() flags */ +#define DWM_CONFIG_OPAQUE_REGION 0x00000001 + /* UpdateLayeredWindow() flags */ #define ULW_COLORKEY 0x00000001 #define ULW_ALPHA 0x00000002 -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10180