[ros-diffs] [gschneider] 44656: [win32k] Add parameter checks for NtGdiSetVirtualResolution

gschneider at svn.reactos.org gschneider at svn.reactos.org
Sat Dec 19 19:57:28 CET 2009


Author: gschneider
Date: Sat Dec 19 19:57:27 2009
New Revision: 44656

URL: http://svn.reactos.org/svn/reactos?rev=44656&view=rev
Log:
[win32k] Add parameter checks for NtGdiSetVirtualResolution

Modified:
    trunk/reactos/subsystems/win32/win32k/objects/coord.c

Modified: trunk/reactos/subsystems/win32/win32k/objects/coord.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/coord.c?rev=44656&r1=44655&r2=44656&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/coord.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/coord.c [iso-8859-1] Sat Dec 19 19:57:27 2009
@@ -1024,7 +1024,20 @@
     PDC dc;
     PDC_ATTR pdcattr;
 
-    // Need test types for zeros and non zeros
+    /* Check parameters (all zeroes resets to real resolution) */
+    if (cxVirtualDevicePixel == 0 && cyVirtualDevicePixel == 0 &&
+        cxVirtualDeviceMm == 0 && cyVirtualDeviceMm == 0)
+    {
+        cxVirtualDevicePixel = NtGdiGetDeviceCaps(hdc, HORZRES);
+        cyVirtualDevicePixel = NtGdiGetDeviceCaps(hdc, VERTRES);
+        cxVirtualDeviceMm = NtGdiGetDeviceCaps(hdc, HORZSIZE);
+        cyVirtualDeviceMm = NtGdiGetDeviceCaps(hdc, VERTSIZE);
+    }
+    else if (cxVirtualDevicePixel == 0 || cyVirtualDevicePixel == 0 || 
+             cxVirtualDeviceMm == 0 || cyVirtualDeviceMm == 0)
+    {
+        return FALSE;
+    }
 
     dc = DC_LockDc(hdc);
     if (!dc) return FALSE;




More information about the Ros-diffs mailing list