[WINSRV] Add a hack to fix giving the api port to win32k
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 16 Dec 2018 11:14:56 +0000 (13:14 +0200)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Wed, 19 Dec 2018 14:13:18 +0000 (16:13 +0200)
- Register our api port with win32k in SrvRegisterLogonProcess because UserClientConnect is never really called.

[NTUSER] Silence a noisy trace

win32ss/user/ntuser/ntstubs.c
win32ss/user/winsrv/usersrv/register.c

index fdb9a7b..44cbb5a 100644 (file)
@@ -797,8 +797,8 @@ NtUserSetInformationThread(IN HANDLE ThreadHandle,
         {
             HANDLE CsrPortHandle;
 
-            ERR("Set CSR API Port for Win32k\n");
 
+            TRACE("Set CSR API Port for Win32k\n");
             if (ThreadInformationLength != sizeof(CsrPortHandle))
             {
                 Status = STATUS_INFO_LENGTH_MISMATCH;
index 0070a34..0a521bc 100644 (file)
@@ -20,6 +20,10 @@ static BOOLEAN ServicesProcessIdValid = FALSE;
 ULONG_PTR ServicesProcessId = 0;
 ULONG_PTR LogonProcessId = 0;
 
+#if 1 //HACK! See use below
+extern HANDLE CsrApiPort;
+#endif
+
 /* PUBLIC SERVER APIS *********************************************************/
 
 CSR_API(SrvRegisterLogonProcess)
@@ -45,6 +49,30 @@ CSR_API(SrvRegisterLogonProcess)
         LogonProcessId = 0;
     }
 
+#if 1 //HAAAACK. This should be done in UserClientConnect which is never called!
+
+    /* Check if we don't have an API port yet */
+    if (CsrApiPort == NULL)
+    {
+        NTSTATUS Status;
+
+        /* Query the API port and save it globally */
+        CsrApiPort = CsrQueryApiPort();
+
+        DPRINT("Giving win32k our api port\n");
+
+        /* Inform win32k about the API port */
+        Status = NtUserSetInformationThread(NtCurrentThread(),
+                                            UserThreadCsrApiPort,
+                                            &CsrApiPort,
+                                            sizeof(CsrApiPort));
+        if (!NT_SUCCESS(Status))
+        {
+            return Status;
+        }
+    }
+#endif
+
     return STATUS_SUCCESS;
 }