https://git.reactos.org/?p=reactos.git;a=commitdiff;h=40c57de728d9ab23213d70b87053ed0943120d06

commit 40c57de728d9ab23213d70b87053ed0943120d06
Author:     Hermès Bélusca-Maïto <[email protected]>
AuthorDate: Mon Nov 18 01:34:19 2019 +0100
Commit:     Hermès Bélusca-Maïto <[email protected]>
CommitDate: Mon Nov 18 01:36:04 2019 +0100

    [KDBG] If no parameters are given to the 'filter' command, display the list 
of available debug filter components.
---
 ntoskrnl/kdbg/kdb_cli.c | 428 +++++++++++++++++++++++++-----------------------
 1 file changed, 226 insertions(+), 202 deletions(-)

diff --git a/ntoskrnl/kdbg/kdb_cli.c b/ntoskrnl/kdbg/kdb_cli.c
index 8debef5dca9..daeccb9f2e8 100644
--- a/ntoskrnl/kdbg/kdb_cli.c
+++ b/ntoskrnl/kdbg/kdb_cli.c
@@ -135,6 +135,177 @@ extern volatile ULONG KdbDmesgTotalWritten;
 
 STRING KdbPromptString = RTL_CONSTANT_STRING("kdb:> ");
 
+//
+// Debug Filter Component Table
+//
+static struct
+{
+    PCSTR Name;
+    ULONG Id;
+}
+ComponentTable[] =
+{
+//
+// Default components
+//
+    { "WIN2000", MAXULONG          },
+    { "DEFAULT", DPFLTR_DEFAULT_ID },
+//
+// Standard components
+//
+    { "SYSTEM",         DPFLTR_SYSTEM_ID        },
+    { "SMSS",           DPFLTR_SMSS_ID          },
+    { "SETUP",          DPFLTR_SETUP_ID         },
+    { "NTFS",           DPFLTR_NTFS_ID          },
+    { "FSTUB",          DPFLTR_FSTUB_ID         },
+    { "CRASHDUMP",      DPFLTR_CRASHDUMP_ID     },
+    { "CDAUDIO",        DPFLTR_CDAUDIO_ID       },
+    { "CDROM",          DPFLTR_CDROM_ID         },
+    { "CLASSPNP",       DPFLTR_CLASSPNP_ID      },
+    { "DISK",           DPFLTR_DISK_ID          },
+    { "REDBOOK",        DPFLTR_REDBOOK_ID       },
+    { "STORPROP",       DPFLTR_STORPROP_ID      },
+    { "SCSIPORT",       DPFLTR_SCSIPORT_ID      },
+    { "SCSIMINIPORT",   DPFLTR_SCSIMINIPORT_ID  },
+    { "CONFIG",         DPFLTR_CONFIG_ID        },
+    { "I8042PRT",       DPFLTR_I8042PRT_ID      },
+    { "SERMOUSE",       DPFLTR_SERMOUSE_ID      },
+    { "LSERMOUS",       DPFLTR_LSERMOUS_ID      },
+    { "KBDHID",         DPFLTR_KBDHID_ID        },
+    { "MOUHID",         DPFLTR_MOUHID_ID        },
+    { "KBDCLASS",       DPFLTR_KBDCLASS_ID      },
+    { "MOUCLASS",       DPFLTR_MOUCLASS_ID      },
+    { "TWOTRACK",       DPFLTR_TWOTRACK_ID      },
+    { "WMILIB",         DPFLTR_WMILIB_ID        },
+    { "ACPI",           DPFLTR_ACPI_ID          },
+    { "AMLI",           DPFLTR_AMLI_ID          },
+    { "HALIA64",        DPFLTR_HALIA64_ID       },
+    { "VIDEO",          DPFLTR_VIDEO_ID         },
+    { "SVCHOST",        DPFLTR_SVCHOST_ID       },
+    { "VIDEOPRT",       DPFLTR_VIDEOPRT_ID      },
+    { "TCPIP",          DPFLTR_TCPIP_ID         },
+    { "DMSYNTH",        DPFLTR_DMSYNTH_ID       },
+    { "NTOSPNP",        DPFLTR_NTOSPNP_ID       },
+    { "FASTFAT",        DPFLTR_FASTFAT_ID       },
+    { "SAMSS",          DPFLTR_SAMSS_ID         },
+    { "PNPMGR",         DPFLTR_PNPMGR_ID        },
+    { "NETAPI",         DPFLTR_NETAPI_ID        },
+    { "SCSERVER",       DPFLTR_SCSERVER_ID      },
+    { "SCCLIENT",       DPFLTR_SCCLIENT_ID      },
+    { "SERIAL",         DPFLTR_SERIAL_ID        },
+    { "SERENUM",        DPFLTR_SERENUM_ID       },
+    { "UHCD",           DPFLTR_UHCD_ID          },
+    { "RPCPROXY",       DPFLTR_RPCPROXY_ID      },
+    { "AUTOCHK",        DPFLTR_AUTOCHK_ID       },
+    { "DCOMSS",         DPFLTR_DCOMSS_ID        },
+    { "UNIMODEM",       DPFLTR_UNIMODEM_ID      },
+    { "SIS",            DPFLTR_SIS_ID           },
+    { "FLTMGR",         DPFLTR_FLTMGR_ID        },
+    { "WMICORE",        DPFLTR_WMICORE_ID       },
+    { "BURNENG",        DPFLTR_BURNENG_ID       },
+    { "IMAPI",          DPFLTR_IMAPI_ID         },
+    { "SXS",            DPFLTR_SXS_ID           },
+    { "FUSION",         DPFLTR_FUSION_ID        },
+    { "IDLETASK",       DPFLTR_IDLETASK_ID      },
+    { "SOFTPCI",        DPFLTR_SOFTPCI_ID       },
+    { "TAPE",           DPFLTR_TAPE_ID          },
+    { "MCHGR",          DPFLTR_MCHGR_ID         },
+    { "IDEP",           DPFLTR_IDEP_ID          },
+    { "PCIIDE",         DPFLTR_PCIIDE_ID        },
+    { "FLOPPY",         DPFLTR_FLOPPY_ID        },
+    { "FDC",            DPFLTR_FDC_ID           },
+    { "TERMSRV",        DPFLTR_TERMSRV_ID       },
+    { "W32TIME",        DPFLTR_W32TIME_ID       },
+    { "PREFETCHER",     DPFLTR_PREFETCHER_ID    },
+    { "RSFILTER",       DPFLTR_RSFILTER_ID      },
+    { "FCPORT",         DPFLTR_FCPORT_ID        },
+    { "PCI",            DPFLTR_PCI_ID           },
+    { "DMIO",           DPFLTR_DMIO_ID          },
+    { "DMCONFIG",       DPFLTR_DMCONFIG_ID      },
+    { "DMADMIN",        DPFLTR_DMADMIN_ID       },
+    { "WSOCKTRANSPORT", DPFLTR_WSOCKTRANSPORT_ID },
+    { "VSS",            DPFLTR_VSS_ID           },
+    { "PNPMEM",         DPFLTR_PNPMEM_ID        },
+    { "PROCESSOR",      DPFLTR_PROCESSOR_ID     },
+    { "DMSERVER",       DPFLTR_DMSERVER_ID      },
+    { "SR",             DPFLTR_SR_ID            },
+    { "INFINIBAND",     DPFLTR_INFINIBAND_ID    },
+    { "IHVDRIVER",      DPFLTR_IHVDRIVER_ID     },
+    { "IHVVIDEO",       DPFLTR_IHVVIDEO_ID      },
+    { "IHVAUDIO",       DPFLTR_IHVAUDIO_ID      },
+    { "IHVNETWORK",     DPFLTR_IHVNETWORK_ID    },
+    { "IHVSTREAMING",   DPFLTR_IHVSTREAMING_ID  },
+    { "IHVBUS",         DPFLTR_IHVBUS_ID        },
+    { "HPS",            DPFLTR_HPS_ID           },
+    { "RTLTHREADPOOL",  DPFLTR_RTLTHREADPOOL_ID },
+    { "LDR",            DPFLTR_LDR_ID           },
+    { "TCPIP6",         DPFLTR_TCPIP6_ID        },
+    { "ISAPNP",         DPFLTR_ISAPNP_ID        },
+    { "SHPC",           DPFLTR_SHPC_ID          },
+    { "STORPORT",       DPFLTR_STORPORT_ID      },
+    { "STORMINIPORT",   DPFLTR_STORMINIPORT_ID  },
+    { "PRINTSPOOLER",   DPFLTR_PRINTSPOOLER_ID  },
+    { "VSSDYNDISK",     DPFLTR_VSSDYNDISK_ID    },
+    { "VERIFIER",       DPFLTR_VERIFIER_ID      },
+    { "VDS",            DPFLTR_VDS_ID           },
+    { "VDSBAS",         DPFLTR_VDSBAS_ID        },
+    { "VDSDYN",         DPFLTR_VDSDYN_ID        },  // Specified in Vista+
+    { "VDSDYNDR",       DPFLTR_VDSDYNDR_ID      },
+    { "VDSLDR",         DPFLTR_VDSLDR_ID        },  // Specified in Vista+
+    { "VDSUTIL",        DPFLTR_VDSUTIL_ID       },
+    { "DFRGIFC",        DPFLTR_DFRGIFC_ID       },
+    { "MM",             DPFLTR_MM_ID            },
+    { "DFSC",           DPFLTR_DFSC_ID          },
+    { "WOW64",          DPFLTR_WOW64_ID         },
+//
+// Components specified in Vista+, some of which we also use in ReactOS
+//
+    { "ALPC",           DPFLTR_ALPC_ID          },
+    { "WDI",            DPFLTR_WDI_ID           },
+    { "PERFLIB",        DPFLTR_PERFLIB_ID       },
+    { "KTM",            DPFLTR_KTM_ID           },
+    { "IOSTRESS",       DPFLTR_IOSTRESS_ID      },
+    { "HEAP",           DPFLTR_HEAP_ID          },
+    { "WHEA",           DPFLTR_WHEA_ID          },
+    { "USERGDI",        DPFLTR_USERGDI_ID       },
+    { "MMCSS",          DPFLTR_MMCSS_ID         },
+    { "TPM",            DPFLTR_TPM_ID           },
+    { "THREADORDER",    DPFLTR_THREADORDER_ID   },
+    { "ENVIRON",        DPFLTR_ENVIRON_ID       },
+    { "EMS",            DPFLTR_EMS_ID           },
+    { "WDT",            DPFLTR_WDT_ID           },
+    { "FVEVOL",         DPFLTR_FVEVOL_ID        },
+    { "NDIS",           DPFLTR_NDIS_ID          },
+    { "NVCTRACE",       DPFLTR_NVCTRACE_ID      },
+    { "LUAFV",          DPFLTR_LUAFV_ID         },
+    { "APPCOMPAT",      DPFLTR_APPCOMPAT_ID     },
+    { "USBSTOR",        DPFLTR_USBSTOR_ID       },
+    { "SBP2PORT",       DPFLTR_SBP2PORT_ID      },
+    { "COVERAGE",       DPFLTR_COVERAGE_ID      },
+    { "CACHEMGR",       DPFLTR_CACHEMGR_ID      },
+    { "MOUNTMGR",       DPFLTR_MOUNTMGR_ID      },
+    { "CFR",            DPFLTR_CFR_ID           },
+    { "TXF",            DPFLTR_TXF_ID           },
+    { "KSECDD",         DPFLTR_KSECDD_ID        },
+    { "FLTREGRESS",     DPFLTR_FLTREGRESS_ID    },
+    { "MPIO",           DPFLTR_MPIO_ID          },
+    { "MSDSM",          DPFLTR_MSDSM_ID         },
+    { "UDFS",           DPFLTR_UDFS_ID          },
+    { "PSHED",          DPFLTR_PSHED_ID         },
+    { "STORVSP",        DPFLTR_STORVSP_ID       },
+    { "LSASS",          DPFLTR_LSASS_ID         },
+    { "SSPICLI",        DPFLTR_SSPICLI_ID       },
+    { "CNG",            DPFLTR_CNG_ID           },
+    { "EXFAT",          DPFLTR_EXFAT_ID         },
+    { "FILETRACE",      DPFLTR_FILETRACE_ID     },
+    { "XSAVE",          DPFLTR_XSAVE_ID         },
+    { "SE",             DPFLTR_SE_ID            },
+    { "DRIVEEXTENDER",  DPFLTR_DRIVEEXTENDER_ID },
+};
+
+//
+// Command Table
+//
 static const struct
 {
     PCHAR Name;
@@ -202,198 +373,6 @@ static const struct
 
 /* FUNCTIONS *****************************************************************/
 
-/*!\brief Transform a component name to an integer
- *
- * \param ComponentName  The name of the component.
- * \param ComponentId    Receives the component id on success.
- *
- * \retval TRUE   Success.
- * \retval FALSE  Failure.
- */
-static BOOLEAN
-KdbpGetComponentId(
-    IN  PCCH ComponentName,
-    OUT PULONG ComponentId)
-{
-    ULONG i;
-
-    static struct
-    {
-        PCCH Name;
-        ULONG Id;
-    }
-    ComponentTable[] =
-    {
-//
-// Default components
-//
-        { "WIN2000", MAXULONG },
-        { "DEFAULT", DPFLTR_DEFAULT_ID },
-//
-// Standard components
-//
-        { "SYSTEM", DPFLTR_SYSTEM_ID },
-        { "SMSS", DPFLTR_SMSS_ID },
-        { "SETUP", DPFLTR_SETUP_ID },
-        { "NTFS", DPFLTR_NTFS_ID },
-        { "FSTUB", DPFLTR_FSTUB_ID },
-        { "CRASHDUMP", DPFLTR_CRASHDUMP_ID },
-        { "CDAUDIO", DPFLTR_CDAUDIO_ID },
-        { "CDROM", DPFLTR_CDROM_ID },
-        { "CLASSPNP", DPFLTR_CLASSPNP_ID },
-        { "DISK", DPFLTR_DISK_ID },
-        { "REDBOOK", DPFLTR_REDBOOK_ID },
-        { "STORPROP", DPFLTR_STORPROP_ID },
-        { "SCSIPORT", DPFLTR_SCSIPORT_ID },
-        { "SCSIMINIPORT", DPFLTR_SCSIMINIPORT_ID },
-        { "CONFIG", DPFLTR_CONFIG_ID },
-        { "I8042PRT", DPFLTR_I8042PRT_ID },
-        { "SERMOUSE", DPFLTR_SERMOUSE_ID },
-        { "LSERMOUS", DPFLTR_LSERMOUS_ID },
-        { "KBDHID", DPFLTR_KBDHID_ID },
-        { "MOUHID", DPFLTR_MOUHID_ID },
-        { "KBDCLASS", DPFLTR_KBDCLASS_ID },
-        { "MOUCLASS", DPFLTR_MOUCLASS_ID },
-        { "TWOTRACK", DPFLTR_TWOTRACK_ID },
-        { "WMILIB", DPFLTR_WMILIB_ID },
-        { "ACPI", DPFLTR_ACPI_ID },
-        { "AMLI", DPFLTR_AMLI_ID },
-        { "HALIA64", DPFLTR_HALIA64_ID },
-        { "VIDEO", DPFLTR_VIDEO_ID },
-        { "SVCHOST", DPFLTR_SVCHOST_ID },
-        { "VIDEOPRT", DPFLTR_VIDEOPRT_ID },
-        { "TCPIP", DPFLTR_TCPIP_ID },
-        { "DMSYNTH", DPFLTR_DMSYNTH_ID },
-        { "NTOSPNP", DPFLTR_NTOSPNP_ID },
-        { "FASTFAT", DPFLTR_FASTFAT_ID },
-        { "SAMSS", DPFLTR_SAMSS_ID },
-        { "PNPMGR", DPFLTR_PNPMGR_ID },
-        { "NETAPI", DPFLTR_NETAPI_ID },
-        { "SCSERVER", DPFLTR_SCSERVER_ID },
-        { "SCCLIENT", DPFLTR_SCCLIENT_ID },
-        { "SERIAL", DPFLTR_SERIAL_ID },
-        { "SERENUM", DPFLTR_SERENUM_ID },
-        { "UHCD", DPFLTR_UHCD_ID },
-        { "RPCPROXY", DPFLTR_RPCPROXY_ID },
-        { "AUTOCHK", DPFLTR_AUTOCHK_ID },
-        { "DCOMSS", DPFLTR_DCOMSS_ID },
-        { "UNIMODEM", DPFLTR_UNIMODEM_ID },
-        { "SIS", DPFLTR_SIS_ID },
-        { "FLTMGR", DPFLTR_FLTMGR_ID },
-        { "WMICORE", DPFLTR_WMICORE_ID },
-        { "BURNENG", DPFLTR_BURNENG_ID },
-        { "IMAPI", DPFLTR_IMAPI_ID },
-        { "SXS", DPFLTR_SXS_ID },
-        { "FUSION", DPFLTR_FUSION_ID },
-        { "IDLETASK", DPFLTR_IDLETASK_ID },
-        { "SOFTPCI", DPFLTR_SOFTPCI_ID },
-        { "TAPE", DPFLTR_TAPE_ID },
-        { "MCHGR", DPFLTR_MCHGR_ID },
-        { "IDEP", DPFLTR_IDEP_ID },
-        { "PCIIDE", DPFLTR_PCIIDE_ID },
-        { "FLOPPY", DPFLTR_FLOPPY_ID },
-        { "FDC", DPFLTR_FDC_ID },
-        { "TERMSRV", DPFLTR_TERMSRV_ID },
-        { "W32TIME", DPFLTR_W32TIME_ID },
-        { "PREFETCHER", DPFLTR_PREFETCHER_ID },
-        { "RSFILTER", DPFLTR_RSFILTER_ID },
-        { "FCPORT", DPFLTR_FCPORT_ID },
-        { "PCI", DPFLTR_PCI_ID },
-        { "DMIO", DPFLTR_DMIO_ID },
-        { "DMCONFIG", DPFLTR_DMCONFIG_ID },
-        { "DMADMIN", DPFLTR_DMADMIN_ID },
-        { "WSOCKTRANSPORT", DPFLTR_WSOCKTRANSPORT_ID },
-        { "VSS", DPFLTR_VSS_ID },
-        { "PNPMEM", DPFLTR_PNPMEM_ID },
-        { "PROCESSOR", DPFLTR_PROCESSOR_ID },
-        { "DMSERVER", DPFLTR_DMSERVER_ID },
-        { "SR", DPFLTR_SR_ID },
-        { "INFINIBAND", DPFLTR_INFINIBAND_ID },
-        { "IHVDRIVER", DPFLTR_IHVDRIVER_ID },
-        { "IHVVIDEO", DPFLTR_IHVVIDEO_ID },
-        { "IHVAUDIO", DPFLTR_IHVAUDIO_ID },
-        { "IHVNETWORK", DPFLTR_IHVNETWORK_ID },
-        { "IHVSTREAMING", DPFLTR_IHVSTREAMING_ID },
-        { "IHVBUS", DPFLTR_IHVBUS_ID },
-        { "HPS", DPFLTR_HPS_ID },
-        { "RTLTHREADPOOL", DPFLTR_RTLTHREADPOOL_ID },
-        { "LDR", DPFLTR_LDR_ID },
-        { "TCPIP6", DPFLTR_TCPIP6_ID },
-        { "ISAPNP", DPFLTR_ISAPNP_ID },
-        { "SHPC", DPFLTR_SHPC_ID },
-        { "STORPORT", DPFLTR_STORPORT_ID },
-        { "STORMINIPORT", DPFLTR_STORMINIPORT_ID },
-        { "PRINTSPOOLER", DPFLTR_PRINTSPOOLER_ID },
-        { "VSSDYNDISK", DPFLTR_VSSDYNDISK_ID },
-        { "VERIFIER", DPFLTR_VERIFIER_ID },
-        { "VDS", DPFLTR_VDS_ID },
-        { "VDSBAS", DPFLTR_VDSBAS_ID },
-        { "VDSDYN", DPFLTR_VDSDYN_ID },
-        { "VDSDYNDR", DPFLTR_VDSDYNDR_ID },
-        { "VDSLDR", DPFLTR_VDSLDR_ID },
-        { "VDSUTIL", DPFLTR_VDSUTIL_ID },
-        { "DFRGIFC", DPFLTR_DFRGIFC_ID },
-        { "MM", DPFLTR_MM_ID },
-        { "DFSC", DPFLTR_DFSC_ID },
-        { "WOW64", DPFLTR_WOW64_ID },
-//
-// Components specified in Vista+, some of which we also use in ReactOS
-//
-        { "ALPC", DPFLTR_ALPC_ID },
-        { "WDI", DPFLTR_WDI_ID },
-        { "PERFLIB", DPFLTR_PERFLIB_ID },
-        { "KTM", DPFLTR_KTM_ID },
-        { "IOSTRESS", DPFLTR_IOSTRESS_ID },
-        { "HEAP", DPFLTR_HEAP_ID },
-        { "WHEA", DPFLTR_WHEA_ID },
-        { "USERGDI", DPFLTR_USERGDI_ID },
-        { "MMCSS", DPFLTR_MMCSS_ID },
-        { "TPM", DPFLTR_TPM_ID },
-        { "THREADORDER", DPFLTR_THREADORDER_ID },
-        { "ENVIRON", DPFLTR_ENVIRON_ID },
-        { "EMS", DPFLTR_EMS_ID },
-        { "WDT", DPFLTR_WDT_ID },
-        { "FVEVOL", DPFLTR_FVEVOL_ID },
-        { "NDIS", DPFLTR_NDIS_ID },
-        { "NVCTRACE", DPFLTR_NVCTRACE_ID },
-        { "LUAFV", DPFLTR_LUAFV_ID },
-        { "APPCOMPAT", DPFLTR_APPCOMPAT_ID },
-        { "USBSTOR", DPFLTR_USBSTOR_ID },
-        { "SBP2PORT", DPFLTR_SBP2PORT_ID },
-        { "COVERAGE", DPFLTR_COVERAGE_ID },
-        { "CACHEMGR", DPFLTR_CACHEMGR_ID },
-        { "MOUNTMGR", DPFLTR_MOUNTMGR_ID },
-        { "CFR", DPFLTR_CFR_ID },
-        { "TXF", DPFLTR_TXF_ID },
-        { "KSECDD", DPFLTR_KSECDD_ID },
-        { "FLTREGRESS", DPFLTR_FLTREGRESS_ID },
-        { "MPIO", DPFLTR_MPIO_ID },
-        { "MSDSM", DPFLTR_MSDSM_ID },
-        { "UDFS", DPFLTR_UDFS_ID },
-        { "PSHED", DPFLTR_PSHED_ID },
-        { "STORVSP", DPFLTR_STORVSP_ID },
-        { "LSASS", DPFLTR_LSASS_ID },
-        { "SSPICLI", DPFLTR_SSPICLI_ID },
-        { "CNG", DPFLTR_CNG_ID },
-        { "EXFAT", DPFLTR_EXFAT_ID },
-        { "FILETRACE", DPFLTR_FILETRACE_ID },
-        { "XSAVE", DPFLTR_XSAVE_ID },
-        { "SE", DPFLTR_SE_ID },
-        { "DRIVEEXTENDER", DPFLTR_DRIVEEXTENDER_ID },
-    };
-
-    for (i = 0; i < sizeof(ComponentTable) / sizeof(ComponentTable[0]); i++)
-    {
-        if (_stricmp(ComponentName, ComponentTable[i].Name) == 0)
-        {
-            *ComponentId = ComponentTable[i].Id;
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
-
 /*!\brief Evaluates an expression...
  *
  * Much like KdbpRpnEvaluateExpression, but prints the error message (if any)
@@ -647,7 +626,34 @@ end:
 }
 #endif
 
-/*!\brief Display list of active debug channels
+/*!\brief Retrieves the component ID corresponding to a given component name.
+ *
+ * \param ComponentName  The name of the component.
+ * \param ComponentId    Receives the component id on success.
+ *
+ * \retval TRUE   Success.
+ * \retval FALSE  Failure.
+ */
+static BOOLEAN
+KdbpGetComponentId(
+    IN  PCSTR ComponentName,
+    OUT PULONG ComponentId)
+{
+    ULONG i;
+
+    for (i = 0; i < sizeof(ComponentTable) / sizeof(ComponentTable[0]); i++)
+    {
+        if (_stricmp(ComponentName, ComponentTable[i].Name) == 0)
+        {
+            *ComponentId = ComponentTable[i].Id;
+            return TRUE;
+        }
+    }
+
+    return FALSE;
+}
+
+/*!\brief Displays the list of active debug channels, or enable/disable debug 
channels.
  */
 static BOOLEAN
 KdbpCmdFilter(
@@ -657,26 +663,44 @@ KdbpCmdFilter(
     ULONG i, j, ComponentId, Level;
     ULONG set = DPFLTR_MASK, clear = DPFLTR_MASK;
     PCHAR pend;
-    LPCSTR opt, p;
+    PCSTR opt, p;
 
     static struct
     {
-        LPCSTR Name;
+        PCSTR Name;
         ULONG Level;
     }
     debug_classes[] =
     {
-        { "error", 1 << DPFLTR_ERROR_LEVEL },
+        { "error",   1 << DPFLTR_ERROR_LEVEL   },
         { "warning", 1 << DPFLTR_WARNING_LEVEL },
-        { "trace", 1 << DPFLTR_TRACE_LEVEL },
-        { "info", 1 << DPFLTR_INFO_LEVEL },
+        { "trace",   1 << DPFLTR_TRACE_LEVEL   },
+        { "info",    1 << DPFLTR_INFO_LEVEL    },
     };
 
+    if (Argc <= 1)
+    {
+        /* Display the list of available debug filter components */
+        KdbpPrint("REMARKS:\n"
+                  "- The 'WIN2000' system-wide debug filter component is used 
for DbgPrint()\n"
+                  "  messages without Component ID and Level.\n"
+                  "- The 'DEFAULT' debug filter component is used for 
DbgPrint() messages with\n"
+                  "  an unknown Component ID.\n\n");
+        KdbpPrint("The list of debug filter components currently available on 
your system is:\n\n");
+        KdbpPrint(" Component Name        Component ID\n"
+                  "================      ==============\n");
+        for (i = 0; i < sizeof(ComponentTable) / sizeof(ComponentTable[0]); 
i++)
+        {
+            KdbpPrint("%16s        0x%08lx\n", ComponentTable[i].Name, 
ComponentTable[i].Id);
+        }
+        return TRUE;
+    }
+
     for (i = 1; i < Argc; i++)
     {
         opt = Argv[i];
         p = opt + strcspn(opt, "+-");
-        if (!p[0]) p = opt; /* assume it's a debug channel name */
+        if (!p[0]) p = opt; /* Assume it's a debug channel name */
 
         if (p > opt)
         {
@@ -685,7 +709,7 @@ KdbpCmdFilter(
                 SIZE_T len = strlen(debug_classes[j].Name);
                 if (len != (p - opt))
                     continue;
-                if (_strnicmp(opt, debug_classes[j].Name, len) == 0) /* found 
it */
+                if (_strnicmp(opt, debug_classes[j].Name, len) == 0) /* Found 
it */
                 {
                     if (*p == '+')
                         set |= debug_classes[j].Level;
@@ -3521,7 +3545,7 @@ BOOLEAN
 KdbpInvokeCliCallbacks(
     IN PCHAR Command,
     IN ULONG Argc,
-    IN PCH Argv[])
+    IN PCHAR Argv[])
 {
     ULONG i;
 
@@ -3559,7 +3583,7 @@ KdbpDoCommand(
     PCHAR p;
     ULONG Argc;
     // FIXME: for what do we need a 1024 characters command line and 256 
tokens?
-    static PCH Argv[256];
+    static PCHAR Argv[256];
     static CHAR OrigCommand[1024];
 
     RtlStringCbCopyA(OrigCommand, sizeof(OrigCommand), Command);

Reply via email to