[NTOS:KD] Pass PreviousMode down to KdpPrintString, since ExGetPreviousMode is not... 188/head
authorThomas Faber <thomas.faber@reactos.org>
Thu, 14 Dec 2017 10:43:57 +0000 (11:43 +0100)
committerThomas Faber <thomas.faber@reactos.org>
Thu, 14 Dec 2017 10:46:18 +0000 (11:46 +0100)
ntoskrnl/include/internal/kd.h
ntoskrnl/kd/kdio.c
ntoskrnl/kd/kdmain.c

index 05179ea..daad753 100644 (file)
@@ -194,7 +194,8 @@ ULONG
 NTAPI
 KdpPrintString(
     _In_reads_bytes_(Length) PCHAR UnsafeString,
-    _In_ ULONG Length);
+    _In_ ULONG Length,
+    _In_ KPROCESSOR_MODE PreviousMode);
 
 ULONG
 NTAPI
index 50e4d81..53c99c4 100644 (file)
@@ -569,7 +569,8 @@ ULONG
 NTAPI
 KdpPrintString(
     _In_reads_bytes_(Length) PCHAR UnsafeString,
-    _In_ ULONG Length)
+    _In_ ULONG Length,
+    _In_ KPROCESSOR_MODE PreviousMode)
 {
     PLIST_ENTRY CurrentEntry;
     PKD_DISPATCH_TABLE CurrentTable;
@@ -580,7 +581,7 @@ KdpPrintString(
 
     Length = min(Length, sizeof(StringBuffer));
 
-    if (ExGetPreviousMode() != KernelMode)
+    if (PreviousMode != KernelMode)
     {
         _SEH2_TRY
         {
index 52b8bab..d219f1b 100644 (file)
@@ -41,14 +41,15 @@ ULONG
 NTAPI
 KdpServiceDispatcher(ULONG Service,
                      PVOID Buffer1,
-                     ULONG Buffer1Length)
+                     ULONG Buffer1Length,
+                     KPROCESSOR_MODE PreviousMode)
 {
     ULONG Result = 0;
 
     switch (Service)
     {
         case BREAKPOINT_PRINT: /* DbgPrint */
-            Result = KdpPrintString(Buffer1, Buffer1Length);
+            Result = KdpPrintString(Buffer1, Buffer1Length, PreviousMode);
             break;
 
 #if DBG
@@ -145,7 +146,8 @@ KdpEnterDebuggerException(IN PKTRAP_FRAME TrapFrame,
             /* Print the string */
             KdpServiceDispatcher(BREAKPOINT_PRINT,
                                  (PVOID)ExceptionRecord->ExceptionInformation[1],
-                                 ExceptionRecord->ExceptionInformation[2]);
+                                 ExceptionRecord->ExceptionInformation[2],
+                                 PreviousMode);
 
             /* Return success */
             KeSetContextReturnRegister(Context, STATUS_SUCCESS);
@@ -493,7 +495,10 @@ KdSystemDebugControl(IN SYSDBG_COMMAND Command,
                      IN KPROCESSOR_MODE PreviousMode)
 {
     /* HACK */
-    return KdpServiceDispatcher(Command, InputBuffer, InputBufferLength);
+    return KdpServiceDispatcher(Command,
+                                InputBuffer,
+                                InputBufferLength,
+                                PreviousMode);
 }
 
 PKDEBUG_ROUTINE KiDebugRoutine = KdpEnterDebuggerException;