Author: tfaber
Date: Tue May  3 12:24:28 2016
New Revision: 71238

URL: http://svn.reactos.org/svn/reactos?rev=71238&view=rev
Log:
[WIN32K:NTUSER]
- Fix indentation. No functional changes.

Modified:
    trunk/reactos/win32ss/user/ntuser/desktop.c

Modified: trunk/reactos/win32ss/user/ntuser/desktop.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/desktop.c?rev=71238&r1=71237&r2=71238&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/desktop.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/desktop.c [iso-8859-1] Tue May  3 
12:24:28 2016
@@ -147,24 +147,24 @@
     _In_ PVOID Parameters)
 {
     PWIN32_DELETEMETHOD_PARAMETERS DeleteParameters = Parameters;
-   PDESKTOP pdesk = (PDESKTOP)DeleteParameters->Object;
-
-   TRACE("Deleting desktop object 0x%p\n", pdesk);
-
-   ASSERT(pdesk->pDeskInfo->spwnd->spwndChild == NULL);
-
-   if (pdesk->pDeskInfo->spwnd)
-       co_UserDestroyWindow(pdesk->pDeskInfo->spwnd);
-
-   if (pdesk->spwndMessage)
-       co_UserDestroyWindow(pdesk->spwndMessage);
-
-   /* Remove the desktop from the window station's list of associcated 
desktops */
-   RemoveEntryList(&pdesk->ListEntry);
-
-   /* Free the heap */
-   IntFreeDesktopHeap(pdesk);
-   return STATUS_SUCCESS;
+    PDESKTOP pdesk = (PDESKTOP)DeleteParameters->Object;
+
+    TRACE("Deleting desktop object 0x%p\n", pdesk);
+
+    ASSERT(pdesk->pDeskInfo->spwnd->spwndChild == NULL);
+
+    if (pdesk->pDeskInfo->spwnd)
+        co_UserDestroyWindow(pdesk->pDeskInfo->spwnd);
+
+    if (pdesk->spwndMessage)
+        co_UserDestroyWindow(pdesk->spwndMessage);
+
+    /* Remove the desktop from the window station's list of associcated 
desktops */
+    RemoveEntryList(&pdesk->ListEntry);
+
+    /* Free the heap */
+    IntFreeDesktopHeap(pdesk);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -215,7 +215,7 @@
     {
         /* This happens when the process leaks desktop handles.
          * At this point the PPROCESSINFO is already destroyed */
-         return STATUS_SUCCESS;
+        return STATUS_SUCCESS;
     }
 
     return IntUnmapDesktopView((PDESKTOP)CloseParameters->Object);
@@ -265,7 +265,7 @@
     len = swprintf(buffer, L"ReactOS Version %S %S", KERNEL_VERSION_STR, 
KERNEL_VERSION_BUILD_STR);
 #endif
 
-   return len;
+    return len;
 }
 
 
@@ -275,133 +275,133 @@
                     HWINSTA *hWinSta,
                     HDESK *hDesktop)
 {
-   OBJECT_ATTRIBUTES ObjectAttributes;
-   UNICODE_STRING ObjectName;
-   NTSTATUS Status;
-   WCHAR wstrWinstaFullName[MAX_PATH], *pwstrWinsta = NULL, *pwstrDesktop = 
NULL;
-
-   ASSERT(hWinSta);
-   ASSERT(hDesktop);
-   ASSERT(DesktopPath);
-
-   *hWinSta = NULL;
-   *hDesktop = NULL;
-
-   if(DesktopPath->Buffer != NULL && DesktopPath->Length > sizeof(WCHAR))
-   {
-      /*
-       * Parse the desktop path string which can be in the form 
"WinSta\Desktop"
-       * or just "Desktop". In latter case WinSta0 will be used.
-       */
-
-      pwstrDesktop = wcschr(DesktopPath->Buffer, L'\\');
-      if(pwstrDesktop != NULL)
-      {
-          *pwstrDesktop = 0;
-          pwstrDesktop++;
-          pwstrWinsta = DesktopPath->Buffer;
-      }
-      else
-      {
-          pwstrDesktop = DesktopPath->Buffer;
-          pwstrWinsta = NULL;
-      }
-
-      TRACE("IntParseDesktopPath pwstrWinsta:%S pwstrDesktop:%S\n", 
pwstrWinsta, pwstrDesktop);
-   }
+    OBJECT_ATTRIBUTES ObjectAttributes;
+    UNICODE_STRING ObjectName;
+    NTSTATUS Status;
+    WCHAR wstrWinstaFullName[MAX_PATH], *pwstrWinsta = NULL, *pwstrDesktop = 
NULL;
+
+    ASSERT(hWinSta);
+    ASSERT(hDesktop);
+    ASSERT(DesktopPath);
+
+    *hWinSta = NULL;
+    *hDesktop = NULL;
+
+    if(DesktopPath->Buffer != NULL && DesktopPath->Length > sizeof(WCHAR))
+    {
+        /*
+         * Parse the desktop path string which can be in the form 
"WinSta\Desktop"
+         * or just "Desktop". In latter case WinSta0 will be used.
+         */
+
+        pwstrDesktop = wcschr(DesktopPath->Buffer, L'\\');
+        if(pwstrDesktop != NULL)
+        {
+            *pwstrDesktop = 0;
+            pwstrDesktop++;
+            pwstrWinsta = DesktopPath->Buffer;
+        }
+        else
+        {
+            pwstrDesktop = DesktopPath->Buffer;
+            pwstrWinsta = NULL;
+        }
+
+        TRACE("IntParseDesktopPath pwstrWinsta:%S pwstrDesktop:%S\n", 
pwstrWinsta, pwstrDesktop);
+    }
 
 #if 0
-   /* Search the process handle table for (inherited) window station
-      handles, use a more appropriate one than WinSta0 if possible. */
-   if (!ObFindHandleForObject(Process,
-                              NULL,
-                              ExWindowStationObjectType,
-                              NULL,
-                              (PHANDLE)hWinSta))
+    /* Search the process handle table for (inherited) window station
+       handles, use a more appropriate one than WinSta0 if possible. */
+    if (!ObFindHandleForObject(Process,
+                               NULL,
+                               ExWindowStationObjectType,
+                               NULL,
+                               (PHANDLE)hWinSta))
 #endif
-   {
-       /* We had no luck searching for opened handles, use WinSta0 now */
-       if(!pwstrWinsta)
-           pwstrWinsta = L"WinSta0";
-   }
+    {
+        /* We had no luck searching for opened handles, use WinSta0 now */
+        if(!pwstrWinsta)
+            pwstrWinsta = L"WinSta0";
+    }
 
 #if 0
-   /* Search the process handle table for (inherited) desktop
-      handles, use a more appropriate one than Default if possible. */
-   if (!ObFindHandleForObject(Process,
-                              NULL,
-                              ExDesktopObjectType,
-                              NULL,
-                              (PHANDLE)hDesktop))
+    /* Search the process handle table for (inherited) desktop
+       handles, use a more appropriate one than Default if possible. */
+    if (!ObFindHandleForObject(Process,
+                               NULL,
+                               ExDesktopObjectType,
+                               NULL,
+                               (PHANDLE)hDesktop))
 #endif
-   {
-       /* We had no luck searching for opened handles, use Desktop now */
-       if(!pwstrDesktop)
-           pwstrDesktop = L"Default";
-   }
-
-   if(*hWinSta == NULL)
-   {
-       swprintf(wstrWinstaFullName, L"%wZ\\%ws", &gustrWindowStationsDir, 
pwstrWinsta);
-       RtlInitUnicodeString( &ObjectName, wstrWinstaFullName);
-
-       TRACE("parsed initial winsta: %wZ\n", &ObjectName);
-
-      /* Open the window station */
-      InitializeObjectAttributes(&ObjectAttributes,
-                                 &ObjectName,
-                                 OBJ_CASE_INSENSITIVE,
-                                 NULL,
-                                 NULL);
-
-      Status = ObOpenObjectByName(&ObjectAttributes,
-                                  ExWindowStationObjectType,
-                                  KernelMode,
-                                  NULL,
-                                  WINSTA_ACCESS_ALL,
-                                  NULL,
-                                  (HANDLE*)hWinSta);
-
-      if(!NT_SUCCESS(Status))
-      {
-         SetLastNtError(Status);
-         ERR("Failed to reference window station %wZ PID: --!\n", &ObjectName 
);
-         return Status;
-      }
-   }
-
-   if(*hDesktop == NULL)
-   {
-      RtlInitUnicodeString(&ObjectName, pwstrDesktop);
-
-      TRACE("parsed initial desktop: %wZ\n", &ObjectName);
-
-      /* Open the desktop object */
-      InitializeObjectAttributes(&ObjectAttributes,
-                                 &ObjectName,
-                                 OBJ_CASE_INSENSITIVE,
-                                 *hWinSta,
-                                 NULL);
-
-      Status = ObOpenObjectByName(&ObjectAttributes,
-                                  ExDesktopObjectType,
-                                  KernelMode,
-                                  NULL,
-                                  DESKTOP_ALL_ACCESS,
-                                  NULL,
-                                  (HANDLE*)hDesktop);
-
-      if(!NT_SUCCESS(Status))
-      {
-         *hDesktop = NULL;
-         NtClose(*hWinSta);
-         *hWinSta = NULL;
-         SetLastNtError(Status);
-         ERR("Failed to reference desktop %wZ PID: --!\n", &ObjectName);
-         return Status;
-      }
-   }
-   return STATUS_SUCCESS;
+    {
+        /* We had no luck searching for opened handles, use Desktop now */
+        if(!pwstrDesktop)
+            pwstrDesktop = L"Default";
+    }
+
+    if(*hWinSta == NULL)
+    {
+        swprintf(wstrWinstaFullName, L"%wZ\\%ws", &gustrWindowStationsDir, 
pwstrWinsta);
+        RtlInitUnicodeString( &ObjectName, wstrWinstaFullName);
+
+        TRACE("parsed initial winsta: %wZ\n", &ObjectName);
+
+        /* Open the window station */
+        InitializeObjectAttributes(&ObjectAttributes,
+                                   &ObjectName,
+                                   OBJ_CASE_INSENSITIVE,
+                                   NULL,
+                                   NULL);
+
+        Status = ObOpenObjectByName(&ObjectAttributes,
+                                    ExWindowStationObjectType,
+                                    KernelMode,
+                                    NULL,
+                                    WINSTA_ACCESS_ALL,
+                                    NULL,
+                                    (HANDLE*)hWinSta);
+
+        if(!NT_SUCCESS(Status))
+        {
+            SetLastNtError(Status);
+            ERR("Failed to reference window station %wZ PID: --!\n", 
&ObjectName );
+            return Status;
+        }
+    }
+
+    if(*hDesktop == NULL)
+    {
+        RtlInitUnicodeString(&ObjectName, pwstrDesktop);
+
+        TRACE("parsed initial desktop: %wZ\n", &ObjectName);
+
+        /* Open the desktop object */
+        InitializeObjectAttributes(&ObjectAttributes,
+                                   &ObjectName,
+                                   OBJ_CASE_INSENSITIVE,
+                                   *hWinSta,
+                                   NULL);
+
+        Status = ObOpenObjectByName(&ObjectAttributes,
+                                    ExDesktopObjectType,
+                                    KernelMode,
+                                    NULL,
+                                    DESKTOP_ALL_ACCESS,
+                                    NULL,
+                                    (HANDLE*)hDesktop);
+
+        if(!NT_SUCCESS(Status))
+        {
+            *hDesktop = NULL;
+            NtClose(*hWinSta);
+            *hWinSta = NULL;
+            SetLastNtError(Status);
+            ERR("Failed to reference desktop %wZ PID: --!\n", &ObjectName);
+            return Status;
+        }
+    }
+    return STATUS_SUCCESS;
 }
 
 /*
@@ -416,34 +416,34 @@
 
 NTSTATUS FASTCALL
 IntValidateDesktopHandle(
-   HDESK Desktop,
-   KPROCESSOR_MODE AccessMode,
-   ACCESS_MASK DesiredAccess,
-   PDESKTOP *Object)
-{
-   NTSTATUS Status;
-
-   Status = ObReferenceObjectByHandle(
-               Desktop,
-               DesiredAccess,
-               ExDesktopObjectType,
-               AccessMode,
-               (PVOID*)Object,
-               NULL);
-
-   TRACE("IntValidateDesktopHandle: handle:0x%p obj:0x%p access:0x%x 
Status:0x%lx\n",
-            Desktop, *Object, DesiredAccess, Status);
-
-   if (!NT_SUCCESS(Status))
-      SetLastNtError(Status);
-
-   return Status;
+    HDESK Desktop,
+    KPROCESSOR_MODE AccessMode,
+    ACCESS_MASK DesiredAccess,
+    PDESKTOP *Object)
+{
+    NTSTATUS Status;
+
+    Status = ObReferenceObjectByHandle(
+                Desktop,
+                DesiredAccess,
+                ExDesktopObjectType,
+                AccessMode,
+                (PVOID*)Object,
+                NULL);
+
+    TRACE("IntValidateDesktopHandle: handle:0x%p obj:0x%p access:0x%x 
Status:0x%lx\n",
+          Desktop, *Object, DesiredAccess, Status);
+
+    if (!NT_SUCCESS(Status))
+        SetLastNtError(Status);
+
+    return Status;
 }
 
 PDESKTOP FASTCALL
 IntGetActiveDesktop(VOID)
 {
-   return gpdeskInputDesktop;
+    return gpdeskInputDesktop;
 }
 
 /*
@@ -452,165 +452,165 @@
 HDESK FASTCALL
 IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
 {
-   NTSTATUS Status;
-   HDESK Ret;
-
-   ASSERT(DesktopObject);
-
-   if (!ObFindHandleForObject(PsGetCurrentProcess(),
-                              DesktopObject,
-                              ExDesktopObjectType,
-                              NULL,
-                              (PHANDLE)&Ret))
-   {
-      Status = ObOpenObjectByPointer(DesktopObject,
-                                     0,
-                                     NULL,
-                                     0,
-                                     ExDesktopObjectType,
-                                     UserMode,
-                                     (PHANDLE)&Ret);
-      if(!NT_SUCCESS(Status))
-      {
-         /* Unable to create a handle */
-         ERR("Unable to create a desktop handle\n");
-         return NULL;
-      }
-   }
-   else
-   {
-       TRACE("Got handle: %p\n", Ret);
-   }
-
-   return Ret;
+    NTSTATUS Status;
+    HDESK Ret;
+
+    ASSERT(DesktopObject);
+
+    if (!ObFindHandleForObject(PsGetCurrentProcess(),
+                               DesktopObject,
+                               ExDesktopObjectType,
+                               NULL,
+                               (PHANDLE)&Ret))
+    {
+        Status = ObOpenObjectByPointer(DesktopObject,
+                                       0,
+                                       NULL,
+                                       0,
+                                       ExDesktopObjectType,
+                                       UserMode,
+                                       (PHANDLE)&Ret);
+        if(!NT_SUCCESS(Status))
+        {
+            /* Unable to create a handle */
+            ERR("Unable to create a desktop handle\n");
+            return NULL;
+        }
+    }
+    else
+    {
+        TRACE("Got handle: %p\n", Ret);
+    }
+
+    return Ret;
 }
 
 PUSER_MESSAGE_QUEUE FASTCALL
 IntGetFocusMessageQueue(VOID)
 {
-   PDESKTOP pdo = IntGetActiveDesktop();
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return(NULL);
-   }
-   return (PUSER_MESSAGE_QUEUE)pdo->ActiveMessageQueue;
+    PDESKTOP pdo = IntGetActiveDesktop();
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return(NULL);
+    }
+    return (PUSER_MESSAGE_QUEUE)pdo->ActiveMessageQueue;
 }
 
 VOID FASTCALL
 IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue)
 {
-   PUSER_MESSAGE_QUEUE Old;
-   PDESKTOP pdo = IntGetActiveDesktop();
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return;
-   }
-   if(NewQueue != NULL)
-   {
-      if(NewQueue->Desktop != NULL)
-      {
-         TRACE("Message Queue already attached to another desktop!\n");
-         return;
-      }
-      IntReferenceMessageQueue(NewQueue);
-      (void)InterlockedExchangePointer((PVOID*)&NewQueue->Desktop, pdo);
-   }
-   Old = 
(PUSER_MESSAGE_QUEUE)InterlockedExchangePointer((PVOID*)&pdo->ActiveMessageQueue,
 NewQueue);
-   if(Old != NULL)
-   {
-      (void)InterlockedExchangePointer((PVOID*)&Old->Desktop, 0);
-      gpqForegroundPrev = Old;
-      IntDereferenceMessageQueue(Old);
-   }
-   // Only one Q can have active foreground even when there are more than one 
desktop.
-   if (NewQueue)
-   {
-      gpqForeground = pdo->ActiveMessageQueue;
-   }
-   else
-   {
-      gpqForeground = NULL;
-      ERR("ptiLastInput is CLEARED!!\n");
-      ptiLastInput = NULL; // ReactOS hacks,,,, should check for process death.
-   }
+    PUSER_MESSAGE_QUEUE Old;
+    PDESKTOP pdo = IntGetActiveDesktop();
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return;
+    }
+    if(NewQueue != NULL)
+    {
+        if(NewQueue->Desktop != NULL)
+        {
+            TRACE("Message Queue already attached to another desktop!\n");
+            return;
+        }
+        IntReferenceMessageQueue(NewQueue);
+        (void)InterlockedExchangePointer((PVOID*)&NewQueue->Desktop, pdo);
+    }
+    Old = 
(PUSER_MESSAGE_QUEUE)InterlockedExchangePointer((PVOID*)&pdo->ActiveMessageQueue,
 NewQueue);
+    if(Old != NULL)
+    {
+        (void)InterlockedExchangePointer((PVOID*)&Old->Desktop, 0);
+        gpqForegroundPrev = Old;
+        IntDereferenceMessageQueue(Old);
+    }
+    // Only one Q can have active foreground even when there are more than one 
desktop.
+    if (NewQueue)
+    {
+        gpqForeground = pdo->ActiveMessageQueue;
+    }
+    else
+    {
+        gpqForeground = NULL;
+        ERR("ptiLastInput is CLEARED!!\n");
+        ptiLastInput = NULL; // ReactOS hacks,,,, should check for process 
death.
+    }
 }
 
 PWND FASTCALL
 IntGetThreadDesktopWindow(PTHREADINFO pti)
 {
-   if (!pti) pti = PsGetCurrentThreadWin32Thread();
-   if (pti->pDeskInfo) return pti->pDeskInfo->spwnd;
-   return NULL;
+    if (!pti) pti = PsGetCurrentThreadWin32Thread();
+    if (pti->pDeskInfo) return pti->pDeskInfo->spwnd;
+    return NULL;
 }
 
 PWND FASTCALL co_GetDesktopWindow(PWND pWnd)
 {
-   if (pWnd->head.rpdesk &&
-       pWnd->head.rpdesk->pDeskInfo)
-      return pWnd->head.rpdesk->pDeskInfo->spwnd;
-   return NULL;
+    if (pWnd->head.rpdesk &&
+        pWnd->head.rpdesk->pDeskInfo)
+        return pWnd->head.rpdesk->pDeskInfo->spwnd;
+    return NULL;
 }
 
 HWND FASTCALL IntGetDesktopWindow(VOID)
 {
-   PDESKTOP pdo = IntGetActiveDesktop();
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return NULL;
-   }
-   return pdo->DesktopWindow;
+    PDESKTOP pdo = IntGetActiveDesktop();
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return NULL;
+    }
+    return pdo->DesktopWindow;
 }
 
 PWND FASTCALL UserGetDesktopWindow(VOID)
 {
-   PDESKTOP pdo = IntGetActiveDesktop();
-
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return NULL;
-   }
-   // return pdo->pDeskInfo->spwnd;
-   return UserGetWindowObject(pdo->DesktopWindow);
+    PDESKTOP pdo = IntGetActiveDesktop();
+
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return NULL;
+    }
+    // return pdo->pDeskInfo->spwnd;
+    return UserGetWindowObject(pdo->DesktopWindow);
 }
 
 HWND FASTCALL IntGetMessageWindow(VOID)
 {
-   PDESKTOP pdo = IntGetActiveDesktop();
-
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return NULL;
-   }
-   return pdo->spwndMessage->head.h;
+    PDESKTOP pdo = IntGetActiveDesktop();
+
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return NULL;
+    }
+    return pdo->spwndMessage->head.h;
 }
 
 PWND FASTCALL UserGetMessageWindow(VOID)
 {
-   PDESKTOP pdo = IntGetActiveDesktop();
-
-   if (!pdo)
-   {
-      TRACE("No active desktop\n");
-      return NULL;
-   }
-   return pdo->spwndMessage;
+    PDESKTOP pdo = IntGetActiveDesktop();
+
+    if (!pdo)
+    {
+        TRACE("No active desktop\n");
+        return NULL;
+    }
+    return pdo->spwndMessage;
 }
 
 HWND FASTCALL IntGetCurrentThreadDesktopWindow(VOID)
 {
-   PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
-   PDESKTOP pdo = pti->rpdesk;
-   if (NULL == pdo)
-   {
-      ERR("Thread doesn't have a desktop\n");
-      return NULL;
-   }
-   return pdo->DesktopWindow;
+    PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+    PDESKTOP pdo = pti->rpdesk;
+    if (NULL == pdo)
+    {
+        ERR("Thread doesn't have a desktop\n");
+        return NULL;
+    }
+    return pdo->DesktopWindow;
 }
 
 /* PUBLIC FUNCTIONS 
***********************************************************/
@@ -618,87 +618,87 @@
 BOOL FASTCALL
 DesktopWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT 
*lResult)
 {
-   PAINTSTRUCT Ps;
-   ULONG Value;
-   //ERR("DesktopWindowProc\n");
-
-   *lResult = 0;
-
-   switch (Msg)
-   {
-      case WM_NCCREATE:
-         if (!Wnd->fnid)
-         {
-            Wnd->fnid = FNID_DESKTOP;
-         }
-         *lResult = (LRESULT)TRUE;
-         return TRUE;
-
-      case WM_CREATE:
-         Value = HandleToULong(PsGetCurrentProcessId());
-         // Save Process ID
-         co_UserSetWindowLong(UserHMGetHandle(Wnd), DT_GWL_PROCESSID, Value, 
FALSE);
-         Value = HandleToULong(PsGetCurrentThreadId());
-         // Save Thread ID
-         co_UserSetWindowLong(UserHMGetHandle(Wnd), DT_GWL_THREADID, Value, 
FALSE);
-      case WM_CLOSE:
-         return TRUE;
-
-      case WM_DISPLAYCHANGE:
-         co_WinPosSetWindowPos(Wnd, 0, 0, 0, LOWORD(lParam), HIWORD(lParam), 
SWP_NOZORDER | SWP_NOACTIVATE);
-         return TRUE;
-
-      case WM_ERASEBKGND:
-         IntPaintDesktop((HDC)wParam);
-         *lResult = 1;
-         return TRUE;
-
-      case WM_PAINT:
-      {
-         if (IntBeginPaint(Wnd, &Ps))
-         {
-            IntEndPaint(Wnd, &Ps);
-         }
-         return TRUE;
-      }
-      case WM_SYSCOLORCHANGE:
-         co_UserRedrawWindow(Wnd, NULL, NULL, 
RDW_INVALIDATE|RDW_ERASE|RDW_ALLCHILDREN);
-         return TRUE;
-
-      case WM_SETCURSOR:
-      {
-          PCURICON_OBJECT pcurOld, pcurNew;
-          pcurNew = UserGetCurIconObject(gDesktopCursor);
-          if (!pcurNew)
-          {
-              return TRUE;
-          }
-
-          pcurNew->CURSORF_flags |= CURSORF_CURRENT;
-          pcurOld = UserSetCursor(pcurNew, FALSE);
-          if (pcurOld)
-          {
-               pcurOld->CURSORF_flags &= ~CURSORF_CURRENT;
-               UserDereferenceObject(pcurOld);
-          }
-          return TRUE;
-      }
-
-      case WM_WINDOWPOSCHANGING:
-      {
-          PWINDOWPOS pWindowPos = (PWINDOWPOS)lParam;
-          if((pWindowPos->flags & SWP_SHOWWINDOW) != 0)
-          {
-              HDESK hdesk = IntGetDesktopObjectHandle(gpdeskInputDesktop);
-              IntSetThreadDesktop(hdesk, FALSE);
-          }
-          break;
-      }
-      default:
-          TRACE("DWP calling IDWP Msg %d\n",Msg);
-          //*lResult = IntDefWindowProc(Wnd, Msg, wParam, lParam, FALSE);
-   }
-   return TRUE; /* We are done. Do not do any callbacks to user mode */
+    PAINTSTRUCT Ps;
+    ULONG Value;
+    //ERR("DesktopWindowProc\n");
+
+    *lResult = 0;
+
+    switch (Msg)
+    {
+        case WM_NCCREATE:
+            if (!Wnd->fnid)
+            {
+                Wnd->fnid = FNID_DESKTOP;
+            }
+            *lResult = (LRESULT)TRUE;
+            return TRUE;
+
+        case WM_CREATE:
+            Value = HandleToULong(PsGetCurrentProcessId());
+            // Save Process ID
+            co_UserSetWindowLong(UserHMGetHandle(Wnd), DT_GWL_PROCESSID, 
Value, FALSE);
+            Value = HandleToULong(PsGetCurrentThreadId());
+            // Save Thread ID
+            co_UserSetWindowLong(UserHMGetHandle(Wnd), DT_GWL_THREADID, Value, 
FALSE);
+        case WM_CLOSE:
+            return TRUE;
+
+        case WM_DISPLAYCHANGE:
+            co_WinPosSetWindowPos(Wnd, 0, 0, 0, LOWORD(lParam), 
HIWORD(lParam), SWP_NOZORDER | SWP_NOACTIVATE);
+            return TRUE;
+
+        case WM_ERASEBKGND:
+            IntPaintDesktop((HDC)wParam);
+            *lResult = 1;
+            return TRUE;
+
+        case WM_PAINT:
+        {
+            if (IntBeginPaint(Wnd, &Ps))
+            {
+                IntEndPaint(Wnd, &Ps);
+            }
+            return TRUE;
+        }
+        case WM_SYSCOLORCHANGE:
+            co_UserRedrawWindow(Wnd, NULL, NULL, 
RDW_INVALIDATE|RDW_ERASE|RDW_ALLCHILDREN);
+            return TRUE;
+
+        case WM_SETCURSOR:
+        {
+            PCURICON_OBJECT pcurOld, pcurNew;
+            pcurNew = UserGetCurIconObject(gDesktopCursor);
+            if (!pcurNew)
+            {
+                return TRUE;
+            }
+
+            pcurNew->CURSORF_flags |= CURSORF_CURRENT;
+            pcurOld = UserSetCursor(pcurNew, FALSE);
+            if (pcurOld)
+            {
+                pcurOld->CURSORF_flags &= ~CURSORF_CURRENT;
+                UserDereferenceObject(pcurOld);
+            }
+            return TRUE;
+        }
+
+        case WM_WINDOWPOSCHANGING:
+        {
+            PWINDOWPOS pWindowPos = (PWINDOWPOS)lParam;
+            if((pWindowPos->flags & SWP_SHOWWINDOW) != 0)
+            {
+                HDESK hdesk = IntGetDesktopObjectHandle(gpdeskInputDesktop);
+                IntSetThreadDesktop(hdesk, FALSE);
+            }
+            break;
+        }
+        default:
+            TRACE("DWP calling IDWP Msg %d\n",Msg);
+            //*lResult = IntDefWindowProc(Wnd, Msg, wParam, lParam, FALSE);
+    }
+    return TRUE; /* We are done. Do not do any callbacks to user mode */
 }
 
 BOOL FASTCALL
@@ -791,72 +791,72 @@
 NTSTATUS FASTCALL
 co_IntShowDesktop(PDESKTOP Desktop, ULONG Width, ULONG Height, BOOL bRedraw)
 {
-   PWND pwnd = Desktop->pDeskInfo->spwnd;
-   UINT flags = SWP_NOACTIVATE|SWP_NOZORDER|SWP_SHOWWINDOW;
-   ASSERT(pwnd);
-
-   if(!bRedraw)
-       flags |= SWP_NOREDRAW;
-
-   co_WinPosSetWindowPos(pwnd, NULL, 0, 0, Width, Height, flags);
-
-   if(bRedraw)
-       co_UserRedrawWindow( pwnd, NULL, 0, RDW_UPDATENOW | RDW_ALLCHILDREN | 
RDW_INVALIDATE );
-
-   return STATUS_SUCCESS;
+    PWND pwnd = Desktop->pDeskInfo->spwnd;
+    UINT flags = SWP_NOACTIVATE|SWP_NOZORDER|SWP_SHOWWINDOW;
+    ASSERT(pwnd);
+
+    if(!bRedraw)
+        flags |= SWP_NOREDRAW;
+
+    co_WinPosSetWindowPos(pwnd, NULL, 0, 0, Width, Height, flags);
+
+    if(bRedraw)
+        co_UserRedrawWindow( pwnd, NULL, 0, RDW_UPDATENOW | RDW_ALLCHILDREN | 
RDW_INVALIDATE );
+
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS FASTCALL
 IntHideDesktop(PDESKTOP Desktop)
 {
-   PWND DesktopWnd;
-
-   DesktopWnd = IntGetWindowObject(Desktop->DesktopWindow);
-   if (! DesktopWnd)
-   {
-      return ERROR_INVALID_WINDOW_HANDLE;
-   }
-   DesktopWnd->style &= ~WS_VISIBLE;
-
-   return STATUS_SUCCESS;
+    PWND DesktopWnd;
+
+    DesktopWnd = IntGetWindowObject(Desktop->DesktopWindow);
+    if (! DesktopWnd)
+    {
+        return ERROR_INVALID_WINDOW_HANDLE;
+    }
+    DesktopWnd->style &= ~WS_VISIBLE;
+
+    return STATUS_SUCCESS;
 }
 
 static
 HWND* FASTCALL
 UserBuildShellHookHwndList(PDESKTOP Desktop)
 {
-   ULONG entries=0;
-   PLIST_ENTRY ListEntry;
-   PSHELL_HOOK_WINDOW Current;
-   HWND* list;
-
-   /* FIXME: If we save nb elements in desktop, we don't have to loop to find 
nb entries */
-   ListEntry = Desktop->ShellHookWindows.Flink;
-   while (ListEntry != &Desktop->ShellHookWindows)
-   {
-      ListEntry = ListEntry->Flink;
-      entries++;
-   }
-
-   if (!entries) return NULL;
-
-   list = ExAllocatePoolWithTag(PagedPool, sizeof(HWND) * (entries + 1), 
USERTAG_WINDOWLIST); /* alloc one extra for nullterm */
-   if (list)
-   {
-      HWND* cursor = list;
-
-      ListEntry = Desktop->ShellHookWindows.Flink;
-      while (ListEntry != &Desktop->ShellHookWindows)
-      {
-         Current = CONTAINING_RECORD(ListEntry, SHELL_HOOK_WINDOW, ListEntry);
-         ListEntry = ListEntry->Flink;
-         *cursor++ = Current->hWnd;
-      }
-
-      *cursor = NULL; /* Nullterm list */
-   }
-
-   return list;
+    ULONG entries=0;
+    PLIST_ENTRY ListEntry;
+    PSHELL_HOOK_WINDOW Current;
+    HWND* list;
+
+    /* FIXME: If we save nb elements in desktop, we don't have to loop to find 
nb entries */
+    ListEntry = Desktop->ShellHookWindows.Flink;
+    while (ListEntry != &Desktop->ShellHookWindows)
+    {
+        ListEntry = ListEntry->Flink;
+        entries++;
+    }
+
+    if (!entries) return NULL;
+
+    list = ExAllocatePoolWithTag(PagedPool, sizeof(HWND) * (entries + 1), 
USERTAG_WINDOWLIST); /* alloc one extra for nullterm */
+    if (list)
+    {
+        HWND* cursor = list;
+
+        ListEntry = Desktop->ShellHookWindows.Flink;
+        while (ListEntry != &Desktop->ShellHookWindows)
+        {
+            Current = CONTAINING_RECORD(ListEntry, SHELL_HOOK_WINDOW, 
ListEntry);
+            ListEntry = ListEntry->Flink;
+            *cursor++ = Current->hWnd;
+        }
+
+        *cursor = NULL; /* Nullterm list */
+    }
+
+    return list;
 }
 
 /*
@@ -866,54 +866,54 @@
  */
 VOID co_IntShellHookNotify(WPARAM Message, WPARAM wParam, LPARAM lParam)
 {
-   PDESKTOP Desktop = IntGetActiveDesktop();
-   HWND* HwndList;
-
-   if (!gpsi->uiShellMsg)
-   {
-      gpsi->uiShellMsg = IntAddAtom(L"SHELLHOOK");
-
-      TRACE("MsgType = %x\n", gpsi->uiShellMsg);
-      if (!gpsi->uiShellMsg)
-         ERR("LastError: %x\n", EngGetLastError());
-   }
-
-   if (!Desktop)
-   {
-      TRACE("IntShellHookNotify: No desktop!\n");
-      return;
-   }
-
-   // Allow other devices have a shot at foreground.
-   if (Message == HSHELL_APPCOMMAND) ptiLastInput = NULL;
-
-   // FIXME: System Tray Support.
-
-   HwndList = UserBuildShellHookHwndList(Desktop);
-   if (HwndList)
-   {
-      HWND* cursor = HwndList;
-
-      for (; *cursor; cursor++)
-      {
-         TRACE("Sending notify\n");
-         UserPostMessage(*cursor,
-                          gpsi->uiShellMsg,
-                          Message,
-                         (Message == HSHELL_LANGUAGE ? lParam : 
(LPARAM)wParam) );
-/*         co_IntPostOrSendMessage(*cursor,
-                                 gpsi->uiShellMsg,
-                                 Message,
-                                 (Message == HSHELL_LANGUAGE ? lParam : 
(LPARAM)wParam) );*/
-      }
-
-      ExFreePoolWithTag(HwndList, USERTAG_WINDOWLIST);
-   }
-
-   if (ISITHOOKED(WH_SHELL))
-   {
-      co_HOOK_CallHooks(WH_SHELL, Message, wParam, lParam);
-   }
+    PDESKTOP Desktop = IntGetActiveDesktop();
+    HWND* HwndList;
+
+    if (!gpsi->uiShellMsg)
+    {
+        gpsi->uiShellMsg = IntAddAtom(L"SHELLHOOK");
+
+        TRACE("MsgType = %x\n", gpsi->uiShellMsg);
+        if (!gpsi->uiShellMsg)
+            ERR("LastError: %x\n", EngGetLastError());
+    }
+
+    if (!Desktop)
+    {
+        TRACE("IntShellHookNotify: No desktop!\n");
+        return;
+    }
+
+    // Allow other devices have a shot at foreground.
+    if (Message == HSHELL_APPCOMMAND) ptiLastInput = NULL;
+
+    // FIXME: System Tray Support.
+
+    HwndList = UserBuildShellHookHwndList(Desktop);
+    if (HwndList)
+    {
+        HWND* cursor = HwndList;
+
+        for (; *cursor; cursor++)
+        {
+            TRACE("Sending notify\n");
+            UserPostMessage(*cursor,
+                            gpsi->uiShellMsg,
+                            Message,
+                            (Message == HSHELL_LANGUAGE ? lParam : 
(LPARAM)wParam) );
+/*            co_IntPostOrSendMessage(*cursor,
+                                    gpsi->uiShellMsg,
+                                    Message,
+                                    (Message == HSHELL_LANGUAGE ? lParam : 
(LPARAM)wParam) );*/
+        }
+
+        ExFreePoolWithTag(HwndList, USERTAG_WINDOWLIST);
+    }
+
+    if (ISITHOOKED(WH_SHELL))
+    {
+        co_HOOK_CallHooks(WH_SHELL, Message, wParam, lParam);
+    }
 }
 
 /*
@@ -926,29 +926,29 @@
  */
 BOOL IntRegisterShellHookWindow(HWND hWnd)
 {
-   PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
-   PDESKTOP Desktop = pti->rpdesk;
-   PSHELL_HOOK_WINDOW Entry;
-
-   TRACE("IntRegisterShellHookWindow\n");
-
-   /* First deregister the window, so we can be sure it's never twice in the
-    * list.
-    */
-   IntDeRegisterShellHookWindow(hWnd);
-
-   Entry = ExAllocatePoolWithTag(PagedPool,
-                                 sizeof(SHELL_HOOK_WINDOW),
-                                 TAG_WINSTA);
-
-   if (!Entry)
-      return FALSE;
-
-   Entry->hWnd = hWnd;
-
-   InsertTailList(&Desktop->ShellHookWindows, &Entry->ListEntry);
-
-   return TRUE;
+    PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+    PDESKTOP Desktop = pti->rpdesk;
+    PSHELL_HOOK_WINDOW Entry;
+
+    TRACE("IntRegisterShellHookWindow\n");
+
+    /* First deregister the window, so we can be sure it's never twice in the
+     * list.
+     */
+    IntDeRegisterShellHookWindow(hWnd);
+
+    Entry = ExAllocatePoolWithTag(PagedPool,
+                                  sizeof(SHELL_HOOK_WINDOW),
+                                  TAG_WINSTA);
+
+    if (!Entry)
+        return FALSE;
+
+    Entry->hWnd = hWnd;
+
+    InsertTailList(&Desktop->ShellHookWindows, &Entry->ListEntry);
+
+    return TRUE;
 }
 
 /*
@@ -958,25 +958,25 @@
  */
 BOOL IntDeRegisterShellHookWindow(HWND hWnd)
 {
-   PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
-   PDESKTOP Desktop = pti->rpdesk;
-   PLIST_ENTRY ListEntry;
-   PSHELL_HOOK_WINDOW Current;
-
-   ListEntry = Desktop->ShellHookWindows.Flink;
-   while (ListEntry != &Desktop->ShellHookWindows)
-   {
-      Current = CONTAINING_RECORD(ListEntry, SHELL_HOOK_WINDOW, ListEntry);
-      ListEntry = ListEntry->Flink;
-      if (Current->hWnd == hWnd)
-      {
-         RemoveEntryList(&Current->ListEntry);
-         ExFreePoolWithTag(Current, TAG_WINSTA);
-         return TRUE;
-      }
-   }
-
-   return FALSE;
+    PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+    PDESKTOP Desktop = pti->rpdesk;
+    PLIST_ENTRY ListEntry;
+    PSHELL_HOOK_WINDOW Current;
+
+    ListEntry = Desktop->ShellHookWindows.Flink;
+    while (ListEntry != &Desktop->ShellHookWindows)
+    {
+        Current = CONTAINING_RECORD(ListEntry, SHELL_HOOK_WINDOW, ListEntry);
+        ListEntry = ListEntry->Flink;
+        if (Current->hWnd == hWnd)
+        {
+            RemoveEntryList(&Current->ListEntry);
+            ExFreePoolWithTag(Current, TAG_WINSTA);
+            return TRUE;
+        }
+    }
+
+    return FALSE;
 }
 
 static VOID
@@ -1058,12 +1058,12 @@
                 /* Fill in the area that the bitmap is not going to cover */
                 if (x > 0 || y > 0)
                 {
-                   /* FIXME: Clip out the bitmap
-                      can be replaced with "NtGdiPatBlt(hDC, x, y, 
WinSta->cxWallpaper, WinSta->cyWallpaper, PATCOPY | DSTINVERT);"
-                      once we support DSTINVERT */
-                  PreviousBrush = NtGdiSelectBrush(hDC, DesktopBrush);
-                  NtGdiPatBlt(hDC, Rect.left, Rect.top, Rect.right, 
Rect.bottom, PATCOPY);
-                  NtGdiSelectBrush(hDC, PreviousBrush);
+                    /* FIXME: Clip out the bitmap
+                       can be replaced with "NtGdiPatBlt(hDC, x, y, 
WinSta->cxWallpaper, WinSta->cyWallpaper, PATCOPY | DSTINVERT);"
+                       once we support DSTINVERT */
+                    PreviousBrush = NtGdiSelectBrush(hDC, DesktopBrush);
+                    NtGdiPatBlt(hDC, Rect.left, Rect.top, Rect.right, 
Rect.bottom, PATCOPY);
+                    NtGdiSelectBrush(hDC, PreviousBrush);
                 }
 
                 /* Do not fill the background after it is painted no matter 
the size of the picture */
@@ -1223,38 +1223,38 @@
     pdesk->pheapDesktop = UserCreateHeap(&pdesk->hsectionDesktop,
                                          &DesktopHeapSystemBase,
                                          HeapSize);
-   if (pdesk->pheapDesktop == NULL)
-   {
-       ERR("Failed to create desktop heap!\n");
-       return STATUS_NO_MEMORY;
-   }
-
-   /* Create DESKTOPINFO */
-   DesktopInfoSize = sizeof(DESKTOPINFO) + DesktopName->Length + sizeof(WCHAR);
-   pdesk->pDeskInfo = RtlAllocateHeap(pdesk->pheapDesktop,
-                                      HEAP_NO_SERIALIZE | HEAP_ZERO_MEMORY,
-                                      DesktopInfoSize);
-   if (pdesk->pDeskInfo == NULL)
-   {
-       ERR("Failed to create the DESKTOP structure!\n");
-       return STATUS_NO_MEMORY;
-   }
-
-   /* Initialize the DESKTOPINFO */
-   pdesk->pDeskInfo->pvDesktopBase = DesktopHeapSystemBase;
-   pdesk->pDeskInfo->pvDesktopLimit = (PVOID)((ULONG_PTR)DesktopHeapSystemBase 
+ HeapSize);
-   RtlCopyMemory(pdesk->pDeskInfo->szDesktopName,
-                 DesktopName->Buffer,
-                 DesktopName->Length + sizeof(WCHAR));
-   for (i = 0; i < NB_HOOKS; i++)
-   {
-      InitializeListHead(&pdesk->pDeskInfo->aphkStart[i]);
-   }
-
-   InitializeListHead(&pdesk->ShellHookWindows);
-   InitializeListHead(&pdesk->PtiList);
-
-   return STATUS_SUCCESS;
+    if (pdesk->pheapDesktop == NULL)
+    {
+        ERR("Failed to create desktop heap!\n");
+        return STATUS_NO_MEMORY;
+    }
+
+    /* Create DESKTOPINFO */
+    DesktopInfoSize = sizeof(DESKTOPINFO) + DesktopName->Length + 
sizeof(WCHAR);
+    pdesk->pDeskInfo = RtlAllocateHeap(pdesk->pheapDesktop,
+                                       HEAP_NO_SERIALIZE | HEAP_ZERO_MEMORY,
+                                       DesktopInfoSize);
+    if (pdesk->pDeskInfo == NULL)
+    {
+        ERR("Failed to create the DESKTOP structure!\n");
+        return STATUS_NO_MEMORY;
+    }
+
+    /* Initialize the DESKTOPINFO */
+    pdesk->pDeskInfo->pvDesktopBase = DesktopHeapSystemBase;
+    pdesk->pDeskInfo->pvDesktopLimit = 
(PVOID)((ULONG_PTR)DesktopHeapSystemBase + HeapSize);
+    RtlCopyMemory(pdesk->pDeskInfo->szDesktopName,
+                  DesktopName->Buffer,
+                  DesktopName->Length + sizeof(WCHAR));
+    for (i = 0; i < NB_HOOKS; i++)
+    {
+        InitializeListHead(&pdesk->pDeskInfo->aphkStart[i]);
+    }
+
+    InitializeListHead(&pdesk->ShellHookWindows);
+    InitializeListHead(&pdesk->PtiList);
+
+    return STATUS_SUCCESS;
 }
 
 /* SYSCALLS 
*******************************************************************/
@@ -1294,167 +1294,167 @@
 
 HDESK APIENTRY
 NtUserCreateDesktop(
-   POBJECT_ATTRIBUTES ObjectAttributes,
-   PUNICODE_STRING lpszDesktopDevice,
-   LPDEVMODEW lpdmw,
-   DWORD dwFlags,
-   ACCESS_MASK dwDesiredAccess)
-{
-   PDESKTOP pdesk = NULL;
-   NTSTATUS Status = STATUS_SUCCESS;
-   HDESK hdesk;
-   BOOLEAN Context = FALSE;
-   UNICODE_STRING ClassName;
-   LARGE_STRING WindowName;
-   BOOL NoHooks = FALSE;
-   PWND pWnd = NULL;
-   CREATESTRUCTW Cs;
-   PTHREADINFO ptiCurrent;
-   PCLS pcls;
-
-   DECLARE_RETURN(HDESK);
-
-   TRACE("Enter NtUserCreateDesktop\n");
-   UserEnterExclusive();
-
-   ptiCurrent = PsGetCurrentThreadWin32Thread();
-   ASSERT(ptiCurrent);
-   ASSERT(gptiDesktopThread);
-
-   /* Turn off hooks when calling any CreateWindowEx from inside win32k. */
-   NoHooks = (ptiCurrent->TIF_flags & TIF_DISABLEHOOKS);
-   ptiCurrent->TIF_flags |= TIF_DISABLEHOOKS;
-   ptiCurrent->pClientInfo->dwTIFlags = ptiCurrent->TIF_flags;
-
-   /*
-    * Try to open already existing desktop
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    PUNICODE_STRING lpszDesktopDevice,
+    LPDEVMODEW lpdmw,
+    DWORD dwFlags,
+    ACCESS_MASK dwDesiredAccess)
+{
+    PDESKTOP pdesk = NULL;
+    NTSTATUS Status = STATUS_SUCCESS;
+    HDESK hdesk;
+    BOOLEAN Context = FALSE;
+    UNICODE_STRING ClassName;
+    LARGE_STRING WindowName;
+    BOOL NoHooks = FALSE;
+    PWND pWnd = NULL;
+    CREATESTRUCTW Cs;
+    PTHREADINFO ptiCurrent;
+    PCLS pcls;
+
+    DECLARE_RETURN(HDESK);
+
+    TRACE("Enter NtUserCreateDesktop\n");
+    UserEnterExclusive();
+
+    ptiCurrent = PsGetCurrentThreadWin32Thread();
+    ASSERT(ptiCurrent);
+    ASSERT(gptiDesktopThread);
+
+    /* Turn off hooks when calling any CreateWindowEx from inside win32k. */
+    NoHooks = (ptiCurrent->TIF_flags & TIF_DISABLEHOOKS);
+    ptiCurrent->TIF_flags |= TIF_DISABLEHOOKS;
+    ptiCurrent->pClientInfo->dwTIFlags = ptiCurrent->TIF_flags;
+
+    /*
+     * Try to open already existing desktop
+     */
+    Status = ObOpenObjectByName(
+                 ObjectAttributes,
+                 ExDesktopObjectType,
+                 UserMode,
+                 NULL,
+                 dwDesiredAccess,
+                 (PVOID)&Context,
+                 (HANDLE*)&hdesk);
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("ObOpenObjectByName failed to open/create desktop\n");
+        SetLastNtError(Status);
+        RETURN(NULL);
+    }
+
+    /* In case the object was not created (eg if it existed), return now */
+    if (Context == FALSE)
+    {
+        TRACE("NtUserCreateDesktop opened desktop %wZ\n", 
ObjectAttributes->ObjectName);
+        RETURN( hdesk);
+    }
+
+    /* Reference the desktop */
+    Status = ObReferenceObjectByHandle(hdesk,
+                                       0,
+                                       ExDesktopObjectType,
+                                       KernelMode,
+                                       (PVOID*)&pdesk,
+                                       NULL);
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Failed to reference desktop object\n");
+        SetLastNtError(Status);
+        RETURN(NULL);
+    }
+
+    /* Get the desktop window class. The thread desktop does not belong to any 
desktop
+     * so the classes created there (including the desktop class) are 
allocated in the shared heap
+     * It would cause problems if we used a class that belongs to the caller
+     */
+    ClassName.Buffer = WC_DESKTOP;
+    ClassName.Length = 0;
+    pcls = IntGetAndReferenceClass(&ClassName, 0, TRUE);
+    if (pcls == NULL)
+    {
+        ASSERT(FALSE);
+        RETURN(NULL);
+    }
+
+    RtlZeroMemory(&WindowName, sizeof(WindowName));
+    RtlZeroMemory(&Cs, sizeof(Cs));
+    Cs.x = UserGetSystemMetrics(SM_XVIRTUALSCREEN),
+    Cs.y = UserGetSystemMetrics(SM_YVIRTUALSCREEN),
+    Cs.cx = UserGetSystemMetrics(SM_CXVIRTUALSCREEN),
+    Cs.cy = UserGetSystemMetrics(SM_CYVIRTUALSCREEN),
+    Cs.style = WS_POPUP|WS_CLIPCHILDREN;
+    Cs.hInstance = hModClient; // hModuleWin; // Server side winproc!
+    Cs.lpszName = (LPCWSTR) &WindowName;
+    Cs.lpszClass = (LPCWSTR) &ClassName;
+
+    /* Use IntCreateWindow instead of co_UserCreateWindowEx cause the later 
expects a thread with a desktop */
+    pWnd = IntCreateWindow(&Cs, &WindowName, pcls, NULL, NULL, NULL, pdesk);
+    if (pWnd == NULL)
+    {
+        ERR("Failed to create desktop window for the new desktop\n");
+        RETURN(NULL);
+    }
+
+    pdesk->dwSessionId = PsGetCurrentProcessSessionId();
+    pdesk->DesktopWindow = pWnd->head.h;
+    pdesk->pDeskInfo->spwnd = pWnd;
+    pWnd->fnid = FNID_DESKTOP;
+
+    ClassName.Buffer = MAKEINTATOM(gpsi->atomSysClass[ICLS_HWNDMESSAGE]);
+    ClassName.Length = 0;
+    pcls = IntGetAndReferenceClass(&ClassName, 0, TRUE);
+    if (pcls == NULL)
+    {
+        ASSERT(FALSE);
+        RETURN(NULL);
+    }
+
+    RtlZeroMemory(&WindowName, sizeof(WindowName));
+    RtlZeroMemory(&Cs, sizeof(Cs));
+    Cs.cx = Cs.cy = 100;
+    Cs.style = WS_POPUP|WS_CLIPCHILDREN;
+    Cs.hInstance = hModClient; // hModuleWin; // Server side winproc!
+    Cs.lpszName = (LPCWSTR) &WindowName;
+    Cs.lpszClass = (LPCWSTR) &ClassName;
+    pWnd = IntCreateWindow(&Cs, &WindowName, pcls, NULL, NULL, NULL, pdesk);
+    if (pWnd == NULL)
+    {
+        ERR("Failed to create message window for the new desktop\n");
+        RETURN(NULL);
+    }
+
+    pdesk->spwndMessage = pWnd;
+    pWnd->fnid = FNID_MESSAGEWND;
+
+    /* Now,,,
+       if !(WinStaObject->Flags & WSF_NOIO) is (not set) for desktop input 
output mode (see wiki)
+       Create Tooltip. Saved in DesktopObject->spwndTooltip.
+       Tooltip dwExStyle: WS_EX_TOOLWINDOW|WS_EX_TOPMOST
+       hWndParent are spwndMessage. Use hModuleWin for server side winproc!
+       The rest is same as message window.
+       http://msdn.microsoft.com/en-us/library/bb760250(VS.85).aspx
     */
-   Status = ObOpenObjectByName(
-               ObjectAttributes,
-               ExDesktopObjectType,
-               UserMode,
-               NULL,
-               dwDesiredAccess,
-               (PVOID)&Context,
-               (HANDLE*)&hdesk);
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("ObOpenObjectByName failed to open/create desktop\n");
-      SetLastNtError(Status);
-      RETURN(NULL);
-   }
-
-   /* In case the object was not created (eg if it existed), return now */
-   if (Context == FALSE)
-   {
-       TRACE("NtUserCreateDesktop opened desktop %wZ\n", 
ObjectAttributes->ObjectName);
-       RETURN( hdesk);
-   }
-
-   /* Reference the desktop */
-   Status = ObReferenceObjectByHandle(hdesk,
-                                      0,
-                                      ExDesktopObjectType,
-                                      KernelMode,
-                                      (PVOID*)&pdesk,
-                                      NULL);
-   if (!NT_SUCCESS(Status))
-   {
-       ERR("Failed to reference desktop object\n");
-       SetLastNtError(Status);
-       RETURN(NULL);
-   }
-
-   /* Get the desktop window class. The thread desktop does not belong to any 
desktop
-    * so the classes created there (including the desktop class) are allocated 
in the shared heap
-    * It would cause problems if we used a class that belongs to the caller
-    */
-   ClassName.Buffer = WC_DESKTOP;
-   ClassName.Length = 0;
-   pcls = IntGetAndReferenceClass(&ClassName, 0, TRUE);
-   if (pcls == NULL)
-   {
-      ASSERT(FALSE);
-      RETURN(NULL);
-   }
-
-   RtlZeroMemory(&WindowName, sizeof(WindowName));
-   RtlZeroMemory(&Cs, sizeof(Cs));
-   Cs.x = UserGetSystemMetrics(SM_XVIRTUALSCREEN),
-   Cs.y = UserGetSystemMetrics(SM_YVIRTUALSCREEN),
-   Cs.cx = UserGetSystemMetrics(SM_CXVIRTUALSCREEN),
-   Cs.cy = UserGetSystemMetrics(SM_CYVIRTUALSCREEN),
-   Cs.style = WS_POPUP|WS_CLIPCHILDREN;
-   Cs.hInstance = hModClient; // hModuleWin; // Server side winproc!
-   Cs.lpszName = (LPCWSTR) &WindowName;
-   Cs.lpszClass = (LPCWSTR) &ClassName;
-
-   /* Use IntCreateWindow instead of co_UserCreateWindowEx cause the later 
expects a thread with a desktop */
-   pWnd = IntCreateWindow(&Cs, &WindowName, pcls, NULL, NULL, NULL, pdesk);
-   if (pWnd == NULL)
-   {
-      ERR("Failed to create desktop window for the new desktop\n");
-      RETURN(NULL);
-   }
-
-   pdesk->dwSessionId = PsGetCurrentProcessSessionId();
-   pdesk->DesktopWindow = pWnd->head.h;
-   pdesk->pDeskInfo->spwnd = pWnd;
-   pWnd->fnid = FNID_DESKTOP;
-
-   ClassName.Buffer = MAKEINTATOM(gpsi->atomSysClass[ICLS_HWNDMESSAGE]);
-   ClassName.Length = 0;
-   pcls = IntGetAndReferenceClass(&ClassName, 0, TRUE);
-   if (pcls == NULL)
-   {
-      ASSERT(FALSE);
-      RETURN(NULL);
-   }
-
-   RtlZeroMemory(&WindowName, sizeof(WindowName));
-   RtlZeroMemory(&Cs, sizeof(Cs));
-   Cs.cx = Cs.cy = 100;
-   Cs.style = WS_POPUP|WS_CLIPCHILDREN;
-   Cs.hInstance = hModClient; // hModuleWin; // Server side winproc!
-   Cs.lpszName = (LPCWSTR) &WindowName;
-   Cs.lpszClass = (LPCWSTR) &ClassName;
-   pWnd = IntCreateWindow(&Cs, &WindowName, pcls, NULL, NULL, NULL, pdesk);
-   if (pWnd == NULL)
-   {
-      ERR("Failed to create message window for the new desktop\n");
-      RETURN(NULL);
-   }
-
-   pdesk->spwndMessage = pWnd;
-   pWnd->fnid = FNID_MESSAGEWND;
-
-   /* Now,,,
-      if !(WinStaObject->Flags & WSF_NOIO) is (not set) for desktop input 
output mode (see wiki)
-      Create Tooltip. Saved in DesktopObject->spwndTooltip.
-      Tooltip dwExStyle: WS_EX_TOOLWINDOW|WS_EX_TOPMOST
-      hWndParent are spwndMessage. Use hModuleWin for server side winproc!
-      The rest is same as message window.
-      http://msdn.microsoft.com/en-us/library/bb760250(VS.85).aspx
-   */
-   RETURN( hdesk);
+    RETURN( hdesk);
 
 CLEANUP:
-   if (pdesk != NULL)
-   {
-       ObDereferenceObject(pdesk);
-   }
-   if (_ret_ == NULL && hdesk != NULL)
-   {
-      ObCloseHandle(hdesk, UserMode);
-   }
-   if (!NoHooks)
-   {
-       ptiCurrent->TIF_flags &= ~TIF_DISABLEHOOKS;
-       ptiCurrent->pClientInfo->dwTIFlags = ptiCurrent->TIF_flags;
-   }
-   TRACE("Leave NtUserCreateDesktop, ret=%p\n",_ret_);
-   UserLeave();
-   END_CLEANUP;
+    if (pdesk != NULL)
+    {
+        ObDereferenceObject(pdesk);
+    }
+    if (_ret_ == NULL && hdesk != NULL)
+    {
+        ObCloseHandle(hdesk, UserMode);
+    }
+    if (!NoHooks)
+    {
+        ptiCurrent->TIF_flags &= ~TIF_DISABLEHOOKS;
+        ptiCurrent->pClientInfo->dwTIFlags = ptiCurrent->TIF_flags;
+    }
+    TRACE("Leave NtUserCreateDesktop, ret=%p\n",_ret_);
+    UserLeave();
+    END_CLEANUP;
 }
 
 /*
@@ -1481,32 +1481,32 @@
 
 HDESK APIENTRY
 NtUserOpenDesktop(
-   POBJECT_ATTRIBUTES ObjectAttributes,
-   DWORD dwFlags,
-   ACCESS_MASK dwDesiredAccess)
-{
-   NTSTATUS Status;
-   HDESK Desktop;
-
-   Status = ObOpenObjectByName(
-               ObjectAttributes,
-               ExDesktopObjectType,
-               UserMode,
-               NULL,
-               dwDesiredAccess,
-               NULL,
-               (HANDLE*)&Desktop);
-
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("Failed to open desktop\n");
-      SetLastNtError(Status);
-      return 0;
-   }
-
-   TRACE("Opened desktop %S with handle 0x%p\n", 
ObjectAttributes->ObjectName->Buffer, Desktop);
-
-   return Desktop;
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    DWORD dwFlags,
+    ACCESS_MASK dwDesiredAccess)
+{
+    NTSTATUS Status;
+    HDESK Desktop;
+
+    Status = ObOpenObjectByName(
+                 ObjectAttributes,
+                 ExDesktopObjectType,
+                 UserMode,
+                 NULL,
+                 dwDesiredAccess,
+                 NULL,
+                 (HANDLE*)&Desktop);
+
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Failed to open desktop\n");
+        SetLastNtError(Status);
+        return 0;
+    }
+
+    TRACE("Opened desktop %S with handle 0x%p\n", 
ObjectAttributes->ObjectName->Buffer, Desktop);
+
+    return Desktop;
 }
 
 /*
@@ -1533,38 +1533,38 @@
 
 HDESK APIENTRY
 NtUserOpenInputDesktop(
-   DWORD dwFlags,
-   BOOL fInherit,
-   ACCESS_MASK dwDesiredAccess)
-{
-   NTSTATUS Status;
-   HDESK hdesk = NULL;
-   ULONG HandleAttributes = 0;
-
-   UserEnterExclusive();
-   TRACE("Enter NtUserOpenInputDesktop gpdeskInputDesktop 
0x%p\n",gpdeskInputDesktop);
-
-   if(fInherit) HandleAttributes = OBJ_INHERIT;
-
-   /* Create a new handle to the object */
-   Status = ObOpenObjectByPointer(
-               gpdeskInputDesktop,
-               HandleAttributes,
-               NULL,
-               dwDesiredAccess,
-               ExDesktopObjectType,
-               UserMode,
-               (PHANDLE)&hdesk);
-
-   if (!NT_SUCCESS(Status))
-   {
-       ERR("Failed to open input desktop object\n");
-       SetLastNtError(Status);
-   }
-
-   TRACE("NtUserOpenInputDesktop returning 0x%p\n",hdesk);
-   UserLeave();
-   return hdesk;
+    DWORD dwFlags,
+    BOOL fInherit,
+    ACCESS_MASK dwDesiredAccess)
+{
+    NTSTATUS Status;
+    HDESK hdesk = NULL;
+    ULONG HandleAttributes = 0;
+
+    UserEnterExclusive();
+    TRACE("Enter NtUserOpenInputDesktop gpdeskInputDesktop 
0x%p\n",gpdeskInputDesktop);
+
+    if(fInherit) HandleAttributes = OBJ_INHERIT;
+
+    /* Create a new handle to the object */
+    Status = ObOpenObjectByPointer(
+                 gpdeskInputDesktop,
+                 HandleAttributes,
+                 NULL,
+                 dwDesiredAccess,
+                 ExDesktopObjectType,
+                 UserMode,
+                 (PHANDLE)&hdesk);
+
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Failed to open input desktop object\n");
+        SetLastNtError(Status);
+    }
+
+    TRACE("NtUserOpenInputDesktop returning 0x%p\n",hdesk);
+    UserLeave();
+    return hdesk;
 }
 
 /*
@@ -1592,43 +1592,43 @@
 BOOL APIENTRY
 NtUserCloseDesktop(HDESK hDesktop)
 {
-   PDESKTOP pdesk;
-   NTSTATUS Status;
-   DECLARE_RETURN(BOOL);
-
-   TRACE("NtUserCloseDesktop called (0x%p)\n", hDesktop);
-   UserEnterExclusive();
-
-   if( hDesktop == gptiCurrent->hdesk || hDesktop == 
gptiCurrent->ppi->hdeskStartup)
-   {
-       ERR("Attempted to close thread desktop\n");
-       EngSetLastError(ERROR_BUSY);
-       RETURN(FALSE);
-   }
-
-   Status = IntValidateDesktopHandle( hDesktop, UserMode, 0, &pdesk);
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("Validation of desktop handle (0x%p) failed\n", hDesktop);
-      RETURN(FALSE);
-   }
-
-   ObDereferenceObject(pdesk);
-
-   Status = ZwClose(hDesktop);
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("Failed to close desktop handle 0x%p\n", hDesktop);
-      SetLastNtError(Status);
-      RETURN(FALSE);
-   }
-
-   RETURN(TRUE);
+    PDESKTOP pdesk;
+    NTSTATUS Status;
+    DECLARE_RETURN(BOOL);
+
+    TRACE("NtUserCloseDesktop called (0x%p)\n", hDesktop);
+    UserEnterExclusive();
+
+    if( hDesktop == gptiCurrent->hdesk || hDesktop == 
gptiCurrent->ppi->hdeskStartup)
+    {
+        ERR("Attempted to close thread desktop\n");
+        EngSetLastError(ERROR_BUSY);
+        RETURN(FALSE);
+    }
+
+    Status = IntValidateDesktopHandle( hDesktop, UserMode, 0, &pdesk);
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Validation of desktop handle (0x%p) failed\n", hDesktop);
+        RETURN(FALSE);
+    }
+
+    ObDereferenceObject(pdesk);
+
+    Status = ZwClose(hDesktop);
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Failed to close desktop handle 0x%p\n", hDesktop);
+        SetLastNtError(Status);
+        RETURN(FALSE);
+    }
+
+    RETURN(TRUE);
 
 CLEANUP:
-   TRACE("Leave NtUserCloseDesktop, ret=%i\n",_ret_);
-   UserLeave();
-   END_CLEANUP;
+    TRACE("Leave NtUserCloseDesktop, ret=%i\n",_ret_);
+    UserLeave();
+    END_CLEANUP;
 }
 
 /*
@@ -1649,13 +1649,13 @@
 BOOL APIENTRY
 NtUserPaintDesktop(HDC hDC)
 {
-   BOOL Ret;
-   UserEnterExclusive();
-   TRACE("Enter NtUserPaintDesktop\n");
-   Ret = IntPaintDesktop(hDC);
-   TRACE("Leave NtUserPaintDesktop, ret=%i\n",Ret);
-   UserLeave();
-   return Ret;
+    BOOL Ret;
+    UserEnterExclusive();
+    TRACE("Enter NtUserPaintDesktop\n");
+    Ret = IntPaintDesktop(hDC);
+    TRACE("Leave NtUserPaintDesktop, ret=%i\n",Ret);
+    UserLeave();
+    return Ret;
 }
 
 /*
@@ -1774,90 +1774,90 @@
 BOOL APIENTRY
 NtUserSwitchDesktop(HDESK hdesk)
 {
-   PDESKTOP pdesk;
-   NTSTATUS Status;
-   BOOL bRedrawDesktop;
-   DECLARE_RETURN(BOOL);
-
-   UserEnterExclusive();
-   TRACE("Enter NtUserSwitchDesktop(0x%p)\n", hdesk);
-
-   Status = IntValidateDesktopHandle( hdesk, UserMode, 0, &pdesk);
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("Validation of desktop handle (0x%p) failed\n", hdesk);
-      RETURN(FALSE);
-   }
-
-   if (PsGetCurrentProcessSessionId() != pdesk->rpwinstaParent->dwSessionId)
-   {
-      ObDereferenceObject(pdesk);
-      ERR("NtUserSwitchDesktop called for a desktop of a different session\n");
-      RETURN(FALSE);
-   }
-
-   if(pdesk == gpdeskInputDesktop)
-   {
-       ObDereferenceObject(pdesk);
-       WARN("NtUserSwitchDesktop called for active desktop\n");
-       RETURN(TRUE);
-   }
-
-   /*
-    * Don't allow applications switch the desktop if it's locked, unless the 
caller
-    * is the logon application itself
-    */
-   if((pdesk->rpwinstaParent->Flags & WSS_LOCKED) &&
-      gpidLogon != PsGetCurrentProcessId())
-   {
-      ObDereferenceObject(pdesk);
-      ERR("Switching desktop 0x%p denied because the window station is 
locked!\n", hdesk);
-      RETURN(FALSE);
-   }
-
-   if(pdesk->rpwinstaParent != InputWindowStation)
-   {
-      ObDereferenceObject(pdesk);
-      ERR("Switching desktop 0x%p denied because desktop doesn't belong to the 
interactive winsta!\n", hdesk);
-      RETURN(FALSE);
-   }
-
-   /* FIXME: Fail if the process is associated with a secured
-             desktop such as Winlogon or Screen-Saver */
-   /* FIXME: Connect to input device */
-
-   TRACE("Switching from desktop 0x%p to 0x%p\n", gpdeskInputDesktop, pdesk);
-
-   bRedrawDesktop = FALSE;
-
-   /* The first time SwitchDesktop is called, gpdeskInputDesktop is NULL */
-   if(gpdeskInputDesktop != NULL)
-   {
-       if((gpdeskInputDesktop->pDeskInfo->spwnd->style & WS_VISIBLE) == 
WS_VISIBLE)
-           bRedrawDesktop = TRUE;
-
-       /* Hide the previous desktop window */
-       IntHideDesktop(gpdeskInputDesktop);
-   }
-
-   /* Set the active desktop in the desktop's window station. */
-   InputWindowStation->ActiveDesktop = pdesk;
-
-   /* Set the global state. */
-   gpdeskInputDesktop = pdesk;
-
-   /* Show the new desktop window */
-   co_IntShowDesktop(pdesk, UserGetSystemMetrics(SM_CXSCREEN), 
UserGetSystemMetrics(SM_CYSCREEN), bRedrawDesktop);
-
-   TRACE("SwitchDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop);
-   ObDereferenceObject(pdesk);
-
-   RETURN(TRUE);
+    PDESKTOP pdesk;
+    NTSTATUS Status;
+    BOOL bRedrawDesktop;
+    DECLARE_RETURN(BOOL);
+
+    UserEnterExclusive();
+    TRACE("Enter NtUserSwitchDesktop(0x%p)\n", hdesk);
+
+    Status = IntValidateDesktopHandle( hdesk, UserMode, 0, &pdesk);
+    if (!NT_SUCCESS(Status))
+    {
+        ERR("Validation of desktop handle (0x%p) failed\n", hdesk);
+        RETURN(FALSE);
+    }
+
+    if (PsGetCurrentProcessSessionId() != pdesk->rpwinstaParent->dwSessionId)
+    {
+        ObDereferenceObject(pdesk);
+        ERR("NtUserSwitchDesktop called for a desktop of a different 
session\n");
+        RETURN(FALSE);
+    }
+
+    if(pdesk == gpdeskInputDesktop)
+    {
+        ObDereferenceObject(pdesk);
+        WARN("NtUserSwitchDesktop called for active desktop\n");
+        RETURN(TRUE);
+    }
+
+    /*
+     * Don't allow applications switch the desktop if it's locked, unless the 
caller
+     * is the logon application itself
+     */
+    if((pdesk->rpwinstaParent->Flags & WSS_LOCKED) &&
+       gpidLogon != PsGetCurrentProcessId())
+    {
+        ObDereferenceObject(pdesk);
+        ERR("Switching desktop 0x%p denied because the window station is 
locked!\n", hdesk);
+        RETURN(FALSE);
+    }
+
+    if(pdesk->rpwinstaParent != InputWindowStation)
+    {
+        ObDereferenceObject(pdesk);
+        ERR("Switching desktop 0x%p denied because desktop doesn't belong to 
the interactive winsta!\n", hdesk);
+        RETURN(FALSE);
+    }
+
+    /* FIXME: Fail if the process is associated with a secured
+              desktop such as Winlogon or Screen-Saver */
+    /* FIXME: Connect to input device */
+
+    TRACE("Switching from desktop 0x%p to 0x%p\n", gpdeskInputDesktop, pdesk);
+
+    bRedrawDesktop = FALSE;
+
+    /* The first time SwitchDesktop is called, gpdeskInputDesktop is NULL */
+    if(gpdeskInputDesktop != NULL)
+    {
+        if((gpdeskInputDesktop->pDeskInfo->spwnd->style & WS_VISIBLE) == 
WS_VISIBLE)
+            bRedrawDesktop = TRUE;
+
+        /* Hide the previous desktop window */
+        IntHideDesktop(gpdeskInputDesktop);
+    }
+
+    /* Set the active desktop in the desktop's window station. */
+    InputWindowStation->ActiveDesktop = pdesk;
+
+    /* Set the global state. */
+    gpdeskInputDesktop = pdesk;
+
+    /* Show the new desktop window */
+    co_IntShowDesktop(pdesk, UserGetSystemMetrics(SM_CXSCREEN), 
UserGetSystemMetrics(SM_CYSCREEN), bRedrawDesktop);
+
+    TRACE("SwitchDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop);
+    ObDereferenceObject(pdesk);
+
+    RETURN(TRUE);
 
 CLEANUP:
-   TRACE("Leave NtUserSwitchDesktop, ret=%i\n",_ret_);
-   UserLeave();
-   END_CLEANUP;
+    TRACE("Leave NtUserSwitchDesktop, ret=%i\n",_ret_);
+    UserLeave();
+    END_CLEANUP;
 }
 
 /*
@@ -1870,80 +1870,80 @@
 HDESK APIENTRY
 NtUserGetThreadDesktop(DWORD dwThreadId, DWORD Unknown1)
 {
-   NTSTATUS Status;
-   PETHREAD Thread;
-   PDESKTOP DesktopObject;
-   HDESK Ret, hThreadDesktop;
-   OBJECT_HANDLE_INFORMATION HandleInformation;
-   DECLARE_RETURN(HDESK);
-
-   UserEnterExclusive();
-   TRACE("Enter NtUserGetThreadDesktop\n");
-
-   if(!dwThreadId)
-   {
-      EngSetLastError(ERROR_INVALID_PARAMETER);
-      RETURN(0);
-   }
-
-   Status = PsLookupThreadByThreadId((HANDLE)(DWORD_PTR)dwThreadId, &Thread);
-   if(!NT_SUCCESS(Status))
-   {
-      EngSetLastError(ERROR_INVALID_PARAMETER);
-      RETURN(0);
-   }
-
-   if(Thread->ThreadsProcess == PsGetCurrentProcess())
-   {
-      /* Just return the handle, we queried the desktop handle of a thread 
running
-         in the same context */
-      Ret = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hdesk;
-      ObDereferenceObject(Thread);
-      RETURN(Ret);
-   }
-
-   /* Get the desktop handle and the desktop of the thread */
-   if(!(hThreadDesktop = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hdesk) ||
-         !(DesktopObject = ((PTHREADINFO)Thread->Tcb.Win32Thread)->rpdesk))
-   {
-      ObDereferenceObject(Thread);
-      ERR("Desktop information of thread 0x%x broken!?\n", dwThreadId);
-      RETURN(NULL);
-   }
-
-   /* We could just use DesktopObject instead of looking up the handle, but 
latter
-      may be a bit safer (e.g. when the desktop is being destroyed */
-   /* Switch into the context of the thread we're trying to get the desktop 
from,
-      so we can use the handle */
-   KeAttachProcess(&Thread->ThreadsProcess->Pcb);
-   Status = ObReferenceObjectByHandle(hThreadDesktop,
-                                      GENERIC_ALL,
-                                      ExDesktopObjectType,
-                                      UserMode,
-                                      (PVOID*)&DesktopObject,
-                                      &HandleInformation);
-   KeDetachProcess();
-
-   /* The handle couldn't be found, there's nothing to get... */
-   if(!NT_SUCCESS(Status))
-   {
-      ObDereferenceObject(Thread);
-      RETURN(NULL);
-   }
-
-   /* Lookup our handle table if we can find a handle to the desktop object,
-      if not, create one */
-   Ret = IntGetDesktopObjectHandle(DesktopObject);
-
-   /* All done, we got a valid handle to the desktop */
-   ObDereferenceObject(DesktopObject);
-   ObDereferenceObject(Thread);
-   RETURN(Ret);
+    NTSTATUS Status;
+    PETHREAD Thread;
+    PDESKTOP DesktopObject;
+    HDESK Ret, hThreadDesktop;
+    OBJECT_HANDLE_INFORMATION HandleInformation;
+    DECLARE_RETURN(HDESK);
+
+    UserEnterExclusive();
+    TRACE("Enter NtUserGetThreadDesktop\n");
+
+    if(!dwThreadId)
+    {
+        EngSetLastError(ERROR_INVALID_PARAMETER);
+        RETURN(0);
+    }
+
+    Status = PsLookupThreadByThreadId((HANDLE)(DWORD_PTR)dwThreadId, &Thread);
+    if(!NT_SUCCESS(Status))
+    {
+        EngSetLastError(ERROR_INVALID_PARAMETER);
+        RETURN(0);
+    }
+
+    if(Thread->ThreadsProcess == PsGetCurrentProcess())
+    {
+        /* Just return the handle, we queried the desktop handle of a thread 
running
+           in the same context */
+        Ret = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hdesk;
+        ObDereferenceObject(Thread);
+        RETURN(Ret);
+    }
+
+    /* Get the desktop handle and the desktop of the thread */
+    if(!(hThreadDesktop = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hdesk) ||
+       !(DesktopObject = ((PTHREADINFO)Thread->Tcb.Win32Thread)->rpdesk))
+    {
+        ObDereferenceObject(Thread);
+        ERR("Desktop information of thread 0x%x broken!?\n", dwThreadId);
+        RETURN(NULL);
+    }
+
+    /* We could just use DesktopObject instead of looking up the handle, but 
latter
+       may be a bit safer (e.g. when the desktop is being destroyed */
+    /* Switch into the context of the thread we're trying to get the desktop 
from,
+       so we can use the handle */
+    KeAttachProcess(&Thread->ThreadsProcess->Pcb);
+    Status = ObReferenceObjectByHandle(hThreadDesktop,
+                                       GENERIC_ALL,
+                                       ExDesktopObjectType,
+                                       UserMode,
+                                       (PVOID*)&DesktopObject,
+                                       &HandleInformation);
+    KeDetachProcess();
+
+    /* The handle couldn't be found, there's nothing to get... */
+    if(!NT_SUCCESS(Status))
+    {
+        ObDereferenceObject(Thread);
+        RETURN(NULL);
+    }
+
+    /* Lookup our handle table if we can find a handle to the desktop object,
+       if not, create one */
+    Ret = IntGetDesktopObjectHandle(DesktopObject);
+
+    /* All done, we got a valid handle to the desktop */
+    ObDereferenceObject(DesktopObject);
+    ObDereferenceObject(Thread);
+    RETURN(Ret);
 
 CLEANUP:
-   TRACE("Leave NtUserGetThreadDesktop, ret=%p\n",_ret_);
-   UserLeave();
-   END_CLEANUP;
+    TRACE("Leave NtUserGetThreadDesktop, ret=%p\n",_ret_);
+    UserLeave();
+    END_CLEANUP;
 }
 
 static NTSTATUS
@@ -2114,8 +2114,8 @@
     /* Desktop is being re-set so clear out foreground. */
     if (pti->rpdesk != pdesk && pti->MessageQueue == gpqForeground)
     {
-       // Like above, there shouldn't be any windows, hooks or anything active 
on this threads desktop!
-       IntSetFocusMessageQueue(NULL);
+        // Like above, there shouldn't be any windows, hooks or anything 
active on this threads desktop!
+        IntSetFocusMessageQueue(NULL);
     }
 
     /* Before doing the switch, map the new desktop heap and allocate the new 
pcti */
@@ -2160,9 +2160,9 @@
     pdeskOld = pti->rpdesk;
     hdeskOld = pti->hdesk;
     if (pti->pcti != &pti->cti)
-       pctiOld = pti->pcti;
+        pctiOld = pti->pcti;
     else
-       pctiOld = NULL;
+        pctiOld = NULL;
 
     /* do the switch */
     if(pdesk != NULL)
@@ -2229,19 +2229,19 @@
 BOOL APIENTRY
 NtUserSetThreadDesktop(HDESK hDesktop)
 {
-   BOOL ret = FALSE;
-
-   UserEnterExclusive();
-
-   // FIXME: IntSetThreadDesktop validates the desktop handle, it should happen
-   // here too and set the NT error level. Q. Is it necessary to have the 
validation
-   // in IntSetThreadDesktop? Is it needed there too?
-   if (hDesktop || (!hDesktop && PsGetCurrentProcess() == gpepCSRSS))
-      ret = IntSetThreadDesktop(hDesktop, FALSE);
-
-   UserLeave();
-
-   return ret;
+    BOOL ret = FALSE;
+
+    UserEnterExclusive();
+
+    // FIXME: IntSetThreadDesktop validates the desktop handle, it should 
happen
+    // here too and set the NT error level. Q. Is it necessary to have the 
validation
+    // in IntSetThreadDesktop? Is it needed there too?
+    if (hDesktop || (!hDesktop && PsGetCurrentProcess() == gpepCSRSS))
+        ret = IntSetThreadDesktop(hDesktop, FALSE);
+
+    UserLeave();
+
+    return ret;
 }
 
 /* EOF */


Reply via email to