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