[ros-diffs] [tkreuzer] 53206: [WIN32K] - use the correct pool tags for PROCESSINFO and THREADINFO - get rid of RETURN macro usage - misc code cleanup

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Sat Aug 13 16:27:31 UTC 2011


Author: tkreuzer
Date: Sat Aug 13 16:27:30 2011
New Revision: 53206

URL: http://svn.reactos.org/svn/reactos?rev=53206&view=rev
Log:
[WIN32K]
- use the correct pool tags for PROCESSINFO and THREADINFO
- get rid of RETURN macro usage
- misc code cleanup

Modified:
    trunk/reactos/subsystems/win32/win32k/main/dllmain.c

Modified: trunk/reactos/subsystems/win32/win32k/main/dllmain.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/main/dllmain.c?rev=53206&r1=53205&r2=53206&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/main/dllmain.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/main/dllmain.c [iso-8859-1] Sat Aug 13 16:27:30 2011
@@ -49,7 +49,7 @@
         /* FIXME - lock the process */
         Win32Process = ExAllocatePoolWithTag(NonPagedPool,
                                              sizeof(PROCESSINFO),
-                                             'p23W');
+                                             USERTAG_PROCESSINFO);
 
         if (Win32Process == NULL) RETURN( STATUS_NO_MEMORY);
 
@@ -157,9 +157,9 @@
 
                 DPRINT1("Shell process is exiting (%d)\n", ExitCode);
 
-                UserPostMessage(hwndSAS, 
-                                WM_LOGONNOTIFY, 
-                                LN_SHELL_EXITED, 
+                UserPostMessage(hwndSAS,
+                                WM_LOGONNOTIFY,
+                                LN_SHELL_EXITED,
                                 ExitCode);
             }
         }
@@ -220,9 +220,9 @@
                      PSW32THREADCALLOUTTYPE Type)
 {
     struct _EPROCESS *Process;
-    PTHREADINFO Win32Thread;
+    PTHREADINFO ptiCurrent;
     int i;
-    DECLARE_RETURN(NTSTATUS);
+    NTSTATUS Status;
 
     DPRINT("Enter Win32kThreadCallback\n");
     UserEnterExclusive();
@@ -230,59 +230,63 @@
     Process = Thread->ThreadsProcess;
 
     /* Get the Win32 Thread */
-    Win32Thread = PsGetThreadWin32Thread(Thread);
+    ptiCurrent = PsGetThreadWin32Thread(Thread);
 
     /* Allocate one if needed */
-    if (!Win32Thread)
+    if (!ptiCurrent)
     {
         /* FIXME - lock the process */
-        Win32Thread = ExAllocatePoolWithTag(NonPagedPool,
-                                            sizeof(THREADINFO),
-                                            't23W');
-
-        if (Win32Thread == NULL) RETURN( STATUS_NO_MEMORY);
-
-        RtlZeroMemory(Win32Thread, sizeof(THREADINFO));
-
-        PsSetThreadWin32Thread(Thread, Win32Thread);
+        ptiCurrent = ExAllocatePoolWithTag(NonPagedPool,
+                                           sizeof(THREADINFO),
+                                           USERTAG_THREADINFO);
+
+        if (ptiCurrent == NULL)
+        {
+            Status = STATUS_NO_MEMORY;
+            goto leave;
+        }
+
+        RtlZeroMemory(ptiCurrent, sizeof(THREADINFO));
+
+        PsSetThreadWin32Thread(Thread, ptiCurrent);
         /* FIXME - unlock the process */
     }
+
     if (Type == PsW32ThreadCalloutInitialize)
     {
         HWINSTA hWinSta = NULL;
         PTEB pTeb;
         HDESK hDesk = NULL;
-        NTSTATUS Status;
         PUNICODE_STRING DesktopPath;
         PDESKTOP pdesk;
         PRTL_USER_PROCESS_PARAMETERS ProcessParams = (Process->Peb ? Process->Peb->ProcessParameters : NULL);
 
         DPRINT("Creating W32 thread TID:%d at IRQ level: %lu\n", Thread->Cid.UniqueThread, KeGetCurrentIrql());
 
-        InitializeListHead(&Win32Thread->WindowListHead);
-        InitializeListHead(&Win32Thread->W32CallbackListHead);
-        InitializeListHead(&Win32Thread->PtiLink);
+        InitializeListHead(&ptiCurrent->WindowListHead);
+        InitializeListHead(&ptiCurrent->W32CallbackListHead);
+        InitializeListHead(&ptiCurrent->PtiLink);
         for (i = 0; i < NB_HOOKS; i++)
         {
-            InitializeListHead(&Win32Thread->aphkStart[i]);
-        }
-
-        Win32Thread->TIF_flags &= ~TIF_INCLEANUP;
-        co_IntDestroyCaret(Win32Thread);
-        Win32Thread->ppi = PsGetCurrentProcessWin32Process();
-        Win32Thread->ptiSibling = Win32Thread->ppi->ptiList;
-        Win32Thread->ppi->ptiList = Win32Thread;
-        Win32Thread->ppi->cThreads++;
-        if (Win32Thread->rpdesk && !Win32Thread->pDeskInfo)
-        {
-           Win32Thread->pDeskInfo = Win32Thread->rpdesk->pDeskInfo;
-        }
-        Win32Thread->MessageQueue = MsqCreateMessageQueue(Thread);
-        Win32Thread->KeyboardLayout = W32kGetDefaultKeyLayout();
-        Win32Thread->pEThread = Thread;
+            InitializeListHead(&ptiCurrent->aphkStart[i]);
+        }
+
+        ptiCurrent->TIF_flags &= ~TIF_INCLEANUP;
+        co_IntDestroyCaret(ptiCurrent);
+        ptiCurrent->ppi = PsGetCurrentProcessWin32Process();
+        ptiCurrent->ptiSibling = ptiCurrent->ppi->ptiList;
+        ptiCurrent->ppi->ptiList = ptiCurrent;
+        ptiCurrent->ppi->cThreads++;
+        if (ptiCurrent->rpdesk && !ptiCurrent->pDeskInfo)
+        {
+           ptiCurrent->pDeskInfo = ptiCurrent->rpdesk->pDeskInfo;
+        }
+        ptiCurrent->MessageQueue = MsqCreateMessageQueue(Thread);
+        ptiCurrent->KeyboardLayout = W32kGetDefaultKeyLayout();
+        ptiCurrent->pEThread = Thread;
 
         /* HAAAAAAAACK! This should go to Win32kProcessCallback */
-        if(Win32Thread->ppi->hdeskStartup == NULL)
+        if(ptiCurrent->ppi->hdeskStartup == NULL)
         {
             /*
              * inherit the thread desktop and process window station (if not yet inherited) from the process startup
@@ -313,8 +317,8 @@
 
                     if(NT_SUCCESS(Status))
                     {
-                        Win32Thread->ppi->hdeskStartup = hDesk;
-                        Win32Thread->ppi->rpdeskStartup = pdesk;
+                        ptiCurrent->ppi->hdeskStartup = hDesk;
+                        ptiCurrent->ppi->rpdeskStartup = pdesk;
                     }
                 }
             }
@@ -324,9 +328,9 @@
             }
         }
 
-        if (Win32Thread->ppi->hdeskStartup != NULL)
-        {
-            if (!IntSetThreadDesktop(Win32Thread->ppi->hdeskStartup, FALSE))
+        if (ptiCurrent->ppi->hdeskStartup != NULL)
+        {
+            if (!IntSetThreadDesktop(ptiCurrent->ppi->hdeskStartup, FALSE))
             {
                 DPRINT1("Unable to set thread desktop\n");
             }
@@ -336,20 +340,21 @@
         if (pTeb)
         { /* Attempt to startup client support which should have been initialized in IntSetThreadDesktop. */
            PCLIENTINFO pci = (PCLIENTINFO)pTeb->Win32ClientInfo;
-           Win32Thread->pClientInfo = pci;
-           pci->ppi = Win32Thread->ppi;
-           pci->fsHooks = Win32Thread->fsHooks;
-           if (Win32Thread->KeyboardLayout) pci->hKL = Win32Thread->KeyboardLayout->hkl;
-           pci->dwTIFlags = Win32Thread->TIF_flags;
+           ptiCurrent->pClientInfo = pci;
+           pci->ppi = ptiCurrent->ppi;
+           pci->fsHooks = ptiCurrent->fsHooks;
+           if (ptiCurrent->KeyboardLayout) pci->hKL = ptiCurrent->KeyboardLayout->hkl;
+           pci->dwTIFlags = ptiCurrent->TIF_flags;
+
            /* CI may not have been initialized. */
-           if (!pci->pDeskInfo && Win32Thread->pDeskInfo)
+           if (!pci->pDeskInfo && ptiCurrent->pDeskInfo)
            {
               if (!pci->ulClientDelta) pci->ulClientDelta = DesktopHeapGetUserDelta();
 
-              pci->pDeskInfo = (PVOID)((ULONG_PTR)Win32Thread->pDeskInfo - pci->ulClientDelta);
+              pci->pDeskInfo = (PVOID)((ULONG_PTR)ptiCurrent->pDeskInfo - pci->ulClientDelta);
            }
-           if (Win32Thread->pcti && pci->pDeskInfo)
-              pci->pClientThreadInfo = (PVOID)((ULONG_PTR)Win32Thread->pcti - pci->ulClientDelta);
+           if (ptiCurrent->pcti && pci->pDeskInfo)
+              pci->pClientThreadInfo = (PVOID)((ULONG_PTR)ptiCurrent->pcti - pci->ulClientDelta);
            else
               pci->pClientThreadInfo = NULL;
         }
@@ -357,60 +362,62 @@
         {
            DPRINT1("No TEB for this Thread!\n");
            // System thread running! Now SendMessage should be okay.
-           Win32Thread->pcti = &Win32Thread->cti;
+           ptiCurrent->pcti = &ptiCurrent->cti;
         }
         GetW32ThreadInfo();
     }
     else
     {
         PTHREADINFO pti;
-        PSINGLE_LIST_ENTRY e;
+        PSINGLE_LIST_ENTRY psle;
 
         DPRINT("Destroying W32 thread TID:%d at IRQ level: %lu\n", Thread->Cid.UniqueThread, KeGetCurrentIrql());
 
-        Win32Thread->TIF_flags |= TIF_INCLEANUP;
-        pti = Win32Thread->ppi->ptiList;
-        if (pti == Win32Thread)
-        {
-           Win32Thread->ppi->ptiList = Win32Thread->ptiSibling;
-           Win32Thread->ppi->cThreads--;
+        ptiCurrent->TIF_flags |= TIF_INCLEANUP;
+        pti = ptiCurrent->ppi->ptiList;
+        if (pti == ptiCurrent)
+        {
+           ptiCurrent->ppi->ptiList = ptiCurrent->ptiSibling;
+           ptiCurrent->ppi->cThreads--;
         }
         else
         {
            do
            {
-               if (pti->ptiSibling == Win32Thread)
+               if (pti->ptiSibling == ptiCurrent)
                {
-                  pti->ptiSibling = Win32Thread->ptiSibling;
-                  Win32Thread->ppi->cThreads--;
+                  pti->ptiSibling = ptiCurrent->ptiSibling;
+                  ptiCurrent->ppi->cThreads--;
                   break;
                }
                pti = pti->ptiSibling;
            }
            while (pti);
         }
-        DceFreeThreadDCE(Win32Thread);
+        DceFreeThreadDCE(ptiCurrent);
         HOOK_DestroyThreadHooks(Thread);
         EVENT_DestroyThreadEvents(Thread);
+
         /* Cleanup timers */
-        DestroyTimersForThread(Win32Thread);
-        KeSetEvent(Win32Thread->MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE);
+        DestroyTimersForThread(ptiCurrent);
+        KeSetEvent(ptiCurrent->MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE);
         UnregisterThreadHotKeys(Thread);
+
         /* what if this co_ func crash in umode? what will clean us up then? */
         co_DestroyThreadWindows(Thread);
-        IntBlockInput(Win32Thread, FALSE);
-        MsqDestroyMessageQueue(Win32Thread->MessageQueue);
-        IntCleanupThreadCallbacks(Win32Thread);
+        IntBlockInput(ptiCurrent, FALSE);
+        MsqDestroyMessageQueue(ptiCurrent->MessageQueue);
+        IntCleanupThreadCallbacks(ptiCurrent);
 
         /* cleanup user object references stack */
-        e = PopEntryList(&Win32Thread->ReferencesList);
-        while (e)
-        {
-            PUSER_REFERENCE_ENTRY ref = CONTAINING_RECORD(e, USER_REFERENCE_ENTRY, Entry);
+        psle = PopEntryList(&ptiCurrent->ReferencesList);
+        while (psle)
+        {
+            PUSER_REFERENCE_ENTRY ref = CONTAINING_RECORD(psle, USER_REFERENCE_ENTRY, Entry);
             DPRINT("thread clean: remove reference obj 0x%x\n",ref->obj);
             UserDereferenceObject(ref->obj);
 
-            e = PopEntryList(&Win32Thread->ReferencesList);
+            psle = PopEntryList(&ptiCurrent->ReferencesList);
         }
 
         IntSetThreadDesktop(NULL, TRUE);
@@ -418,12 +425,13 @@
         PsSetThreadWin32Thread(Thread, NULL);
     }
 
-    RETURN( STATUS_SUCCESS);
-
-CLEANUP:
+    Status = STATUS_SUCCESS;
+
+leave:
     UserLeave();
-    DPRINT("Leave Win32kThreadCallback, ret=%i\n",_ret_);
-    END_CLEANUP;
+    DPRINT("Leave Win32kThreadCallback, Status=0x%lx\n",Status);
+
+    return Status;
 }
 
 NTSTATUS




More information about the Ros-diffs mailing list