- Fix 2 user32 winstation test failures (patch by Giannis Adamopoulos johnyadams...
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 17 Sep 2009 15:20:24 +0000 (15:20 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 17 Sep 2009 15:20:24 +0000 (15:20 +0000)
- Revert hack from 43061 and fix it properly
- Test results verified by Amine Khaldi

svn path=/trunk/; revision=43062

reactos/subsystems/win32/win32k/ntuser/clipboard.c
reactos/subsystems/win32/win32k/ntuser/winsta.c

index e3dc5c4..3d1f1af 100644 (file)
@@ -1152,7 +1152,7 @@ NtUserGetClipboardSequenceNumber(VOID)
 
     WinSta = UserGetProcessWindowStation();
 
-    Status = IntValidateWindowStationHandle(WinSta, UserMode, 0 /*WINSTA_ACCESSCLIPBOARD*/, &WinStaObj);
+    Status = IntValidateWindowStationHandle(WinSta, KernelMode, WINSTA_ACCESSCLIPBOARD, &WinStaObj);
 
     if (!NT_SUCCESS(Status))
     {
index 5da6ce8..3919100 100644 (file)
@@ -630,14 +630,14 @@ NtUserOpenWindowStation(
    InitializeObjectAttributes(
       &ObjectAttributes,
       &WindowStationName,
-      0,
+      OBJ_CASE_INSENSITIVE,
       NULL,
       NULL);
 
    Status = ObOpenObjectByName(
                &ObjectAttributes,
                ExWindowStationObjectType,
-               UserMode,
+               KernelMode,
                NULL,
                dwDesiredAccess,
                NULL,
@@ -687,6 +687,11 @@ NtUserCloseWindowStation(
 
    DPRINT("About to close window station handle (0x%X)\n", hWinSta);
 
+       if (hWinSta == UserGetProcessWindowStation())
+       {
+               return FALSE;
+       }
+
    Status = IntValidateWindowStationHandle(
                hWinSta,
                KernelMode,