[USERSRV] Hard-error improvements 6/7
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 24 Mar 2018 22:07:35 +0000 (23:07 +0100)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 7 Apr 2018 16:48:12 +0000 (18:48 +0200)
Make UserpFormatMessages() return the possible timeout for the hard error; use it when displaying the hard error message boxes.

win32ss/user/winsrv/usersrv/harderror.c

index 9a1d2c7..9248d60 100644 (file)
@@ -346,6 +346,7 @@ UserpFormatMessages(
     IN OUT PUNICODE_STRING TextStringU,
     IN OUT PUNICODE_STRING CaptionStringU,
     OUT PUINT pdwType,
+    OUT PULONG pdwTimeout,
     IN PHARDERROR_MSG Message)
 {
     NTSTATUS Status;
@@ -418,6 +419,12 @@ UserpFormatMessages(
             CaptionStringU->Length = 0;
         }
 
+        /* Set the timeout */
+        if (Message->NumberOfParameters >= 4)
+            *pdwTimeout = (ULONG)Parameters[3];
+        else
+            *pdwTimeout = INFINITE;
+
         goto Quit;
     }
 
@@ -462,6 +469,9 @@ UserpFormatMessages(
 
     *pdwType |= MB_SYSTEMMODAL | MB_SETFOREGROUND;
 
+    /* Set the timeout */
+    *pdwTimeout = INFINITE;
+
     /* Copy the Parameters array locally */
     RtlCopyMemory(&CopyParameters, Parameters, sizeof(CopyParameters));
 
@@ -991,7 +1001,8 @@ UserServerHardError(
     IN PHARDERROR_MSG Message)
 {
     ULONG ErrorMode;
-    UINT dwType = 0;
+    UINT  dwType = 0;
+    ULONG Timeout = INFINITE;
     UNICODE_STRING TextU, CaptionU;
     WCHAR LocalTextBuffer[256];
     WCHAR LocalCaptionBuffer[256];
@@ -1029,7 +1040,7 @@ UserServerHardError(
     /* Format the message caption and text */
     RtlInitEmptyUnicodeString(&TextU, LocalTextBuffer, sizeof(LocalTextBuffer));
     RtlInitEmptyUnicodeString(&CaptionU, LocalCaptionBuffer, sizeof(LocalCaptionBuffer));
-    UserpFormatMessages(&TextU, &CaptionU, &dwType, /* &Timeout, */ Message);
+    UserpFormatMessages(&TextU, &CaptionU, &dwType, &Timeout, Message);
 
     /* Log the hard error message */
     UserpLogHardError(&TextU, &CaptionU);
@@ -1065,7 +1076,7 @@ UserServerHardError(
     Message->Response = UserpMessageBox(TextU.Buffer,
                                         CaptionU.Buffer,
                                         dwType,
-                                        (ULONG)-1);
+                                        Timeout);
 
 Quit:
     /* Free the strings if they have been reallocated */