Use a work item only for calling KdSystemDebugControl with code 10 (which is Tab + K, or "Enter Kernel Debugger") because sometimes when the system crashes work items do not work anymore. Thanks to Filip for pointing out the problem.
Modified: trunk/reactos/drivers/input/keyboard/keyboard.c
--- trunk/reactos/drivers/input/keyboard/keyboard.c 2005-03-21 12:41:54 UTC (rev 14252) +++ trunk/reactos/drivers/input/keyboard/keyboard.c 2005-03-21 17:09:06 UTC (rev 14253) @@ -441,7 +441,7 @@
if (SystemArgument1 == NULL && DoSystemDebug != -1) {
- if (KbdWorkItem != NULL)
+ if (KbdWorkItem != NULL && DoSystemDebug == 10) /* 10 is Tab + K (enter kernel debugger) */
{ IoQueueWorkItem(KbdWorkItem, (PIO_WORKITEM_ROUTINE)KbdWorkItemRoutine, DelayedWorkQueue, NULL); }