Я пытаюсь создать драйвер, который перехватит определенную последовательность клавиш и выполнит перезагрузку из режима ядра в Windows, аналогично последовательности клавиш REISUB в Linux.
Я создал обработчик клавиатуры, как и Ctrl2Cap , и попытался вызвать NtShutdownSystem
, чтобы перезагрузить систему.
Обработчик обнаруживает нажатие клавиши, но проблема в том, что когда он действительно вызывает NtShutdownSystem
, я получаю BSOD с кодом ошибки ATTEMPTED_SWITCH_FROM_DPC
.
Я предполагаю это потому что я не могу выключить систему из выполняющегося DPC , поэтому мне, вероятно, нужно выполнить свой код из другого места. Но я не знаю где.
Итак, вопрос: