From 30ea4eb1ae8777431859fdcc90fb35df9f513fab Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Wed, 9 Sep 2015 19:38:36 +0000 Subject: [PATCH] [WIN32SS] Fix NtUserChangeDisplaySettings, I accidently removed one (unused) param too much (parameter count should be 4 after all), and it seems code relied on this check. svn path=/trunk/; revision=69159 --- reactos/win32ss/include/ntuser.h | 1 + reactos/win32ss/user/ntuser/display.c | 4 +++- reactos/win32ss/user/user32/misc/display.c | 6 +++--- reactos/win32ss/w32ksvc.h | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/reactos/win32ss/include/ntuser.h b/reactos/win32ss/include/ntuser.h index 3db2d15b7a4..6946969e40d 100644 --- a/reactos/win32ss/include/ntuser.h +++ b/reactos/win32ss/include/ntuser.h @@ -1696,6 +1696,7 @@ NTAPI NtUserChangeDisplaySettings( PUNICODE_STRING lpszDeviceName, LPDEVMODEW lpDevMode, + HWND hwnd, DWORD dwflags); BOOL diff --git a/reactos/win32ss/user/ntuser/display.c b/reactos/win32ss/user/ntuser/display.c index 9f87a467bad..a6a1d0735d1 100644 --- a/reactos/win32ss/user/ntuser/display.c +++ b/reactos/win32ss/user/ntuser/display.c @@ -814,6 +814,7 @@ APIENTRY NtUserChangeDisplaySettings( PUNICODE_STRING pustrDevice, LPDEVMODEW lpDevMode, + HWND hWnd, DWORD dwflags) { WCHAR awcDevice[CCHDEVICENAME]; @@ -822,7 +823,8 @@ NtUserChangeDisplaySettings( LONG lRet; /* Check arguments */ - if (dwflags != CDS_VIDEOPARAMETERS) + if ((dwflags != CDS_VIDEOPARAMETERS) || + (hWnd != NULL)) { EngSetLastError(ERROR_INVALID_PARAMETER); return DISP_CHANGE_BADPARAM; diff --git a/reactos/win32ss/user/user32/misc/display.c b/reactos/win32ss/user/user32/misc/display.c index d2ff2827692..0990d531a4a 100644 --- a/reactos/win32ss/user/user32/misc/display.c +++ b/reactos/win32ss/user/user32/misc/display.c @@ -457,14 +457,14 @@ ChangeDisplaySettingsExA( pDevModeW = GdiConvertToDevmodeW(lpDevMode); if(pDevModeW) { - rc = NtUserChangeDisplaySettings(pDeviceName, pDevModeW, dwflags); + rc = NtUserChangeDisplaySettings(pDeviceName, pDevModeW, hwnd, dwflags); RtlFreeHeap(GetProcessHeap(), 0, pDevModeW); } else rc = DISP_CHANGE_SUCCESSFUL; } else - rc = NtUserChangeDisplaySettings(pDeviceName, NULL, dwflags); + rc = NtUserChangeDisplaySettings(pDeviceName, NULL, hwnd, dwflags); if (lpszDeviceName != NULL) RtlFreeUnicodeString(&DeviceName); @@ -509,7 +509,7 @@ ChangeDisplaySettingsExW( else pDeviceName = NULL; - rc = NtUserChangeDisplaySettings(pDeviceName, lpDevMode, dwflags); + rc = NtUserChangeDisplaySettings(pDeviceName, lpDevMode, hwnd, dwflags); return rc; } diff --git a/reactos/win32ss/w32ksvc.h b/reactos/win32ss/w32ksvc.h index 4fa2a00b4ac..8de74d0172a 100644 --- a/reactos/win32ss/w32ksvc.h +++ b/reactos/win32ss/w32ksvc.h @@ -328,7 +328,7 @@ SVC_(UserCallOneParam, 2) SVC_(UserCallTwoParam, 3) SVC_(UserChangeClipboardChain, 2) - SVC_(UserChangeDisplaySettings, 3) + SVC_(UserChangeDisplaySettings, 4) SVC_(UserCheckImeHotKey, 2) SVC_(UserCheckMenuItem, 3) SVC_(UserChildWindowFromPointEx, 4)