[NTOS:KD] Fix wrong debug level checking logic in KdpPrint.
authorVictor Perevertkin <victor.perevertkin@reactos.org>
Thu, 19 Dec 2019 18:01:30 +0000 (21:01 +0300)
committerVictor Perevertkin <victor@perevertkin.ru>
Mon, 30 Dec 2019 03:57:49 +0000 (05:57 +0200)
Use NtQueryDebugFilterState in that function for consistency.
Thanks Hermès Bélusca-Maïto for help

ntoskrnl/kd64/kdprint.c

index 4d35bf6..81da68b 100644 (file)
@@ -343,31 +343,16 @@ KdpPrint(
     STRING OutputString;
     CHAR CapturedString[512];
 
-    /* Assume failure */
-    *Handled = FALSE;
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-    if ((ComponentId >= KdComponentTableSize) && (ComponentId < MAXULONG))
-    {
-        /* Use the default component ID */
-        Mask = &Kd_DEFAULT_Mask;
-        // Level = DPFLTR_INFO_LEVEL; // Override the Level.
-    }
-#endif
-    /* Convert Level to bit field if required */
-    if (Level < 32) Level = 1 << Level;
-    Level &= ~DPFLTR_MASK;
-
-    /* Validate the mask */
-    if (!(Kd_WIN2000_Mask & Level) ||
-        ((ComponentId < KdComponentTableSize) &&
-        !(*KdComponentTable[ComponentId] & Level)))
+    if (NtQueryDebugFilterState(ComponentId, Level) == (NTSTATUS)FALSE)
     {
         /* Mask validation failed */
         *Handled = TRUE;
         return STATUS_SUCCESS;
     }
 
+    /* Assume failure */
+    *Handled = FALSE;
+
     /* Normalize the length */
     Length = min(Length, sizeof(CapturedString));