[WIN32K:NTUSER] Add a temporary winsta/desktop-connection hack for CSRSS/USERSRV...
[reactos.git] / win32ss / user / ntuser / main.c
index 21fba73..73d39d3 100644 (file)
@@ -577,7 +577,8 @@ InitThreadCallback(PETHREAD Thread)
      */
     // if (ptiCurrent->ppi->hdeskStartup == NULL && InputWindowStation != NULL)
     /* Last things to do only if we are not a SYSTEM or CSRSS thread */
-    if (!(ptiCurrent->TIF_flags & (TIF_SYSTEMTHREAD | TIF_CSRSSTHREAD)) &&
+    // HACK Part #1: Temporarily disabled to have our current USERSRV running, but normally this is its duty to connect itself to the required desktop!
+    if (// !(ptiCurrent->TIF_flags & (TIF_SYSTEMTHREAD | TIF_CSRSSTHREAD)) &&
         /**/ptiCurrent->ppi->hdeskStartup == NULL &&/**/
         InputWindowStation != NULL)
     {
@@ -586,6 +587,10 @@ InitThreadCallback(PETHREAD Thread)
         UNICODE_STRING DesktopPath;
         PDESKTOP pdesk;
 
+        // HACK Part #2: We force USERSRV to connect to WinSta0 by setting the STARTF_INHERITDESKTOP flag.
+        if (ptiCurrent->TIF_flags & (TIF_SYSTEMTHREAD | TIF_CSRSSTHREAD))
+            ProcessParams->WindowFlags |= STARTF_INHERITDESKTOP;
+
         /*
          * Inherit the thread desktop and process window station (if not yet inherited)
          * from the process startup info structure. See documentation of CreateProcess().