2014-12-26 3 views
-2

Я пишу приложение Дефрагментации во время загрузки. Но проблема в том, что во время загрузки, когда монитор запускается и появляется черный экран, он не реагирует на какие-либо клавиши клавиатуры при нажатии?клавиатура не отвечает во время загрузки?

Мой код выглядит, что:

  1. Я называю NtCreateFile объекта «Device \ KeyboardClass0», и он возвращает успешно с ручкой на объект.
  2. Затем я создаю событие с помощью NtCreateEvent и он успешно возвращается.
  3. затем я вызываю NtReadFile с дескриптором и событием.
  4. затем я жду на NtWaitForSingleObject, чтобы сообщить мне, когда есть что-то прочитать.
  5. Когда мне сообщают, я собираюсь прочитать ключ, который был нажат пользователем.

Проблема заключается в том, что шаг # 5 недостижим, и я нажатия на клавиши клавиатуры USB и ничего не происходит, как будто клавиатура не была нажата.

Тот же код отлично работает с клавиатурой PS/2, но с клавиатурой USB я не могу что-то прочитал.

+0

ОК, поэтому у вас есть ошибки с серьезными последствиями. Только этого можно ожидать от такого программного обеспечения. Просто переформатируйте и восстановите резервные копии, прежде чем пытаться отладить вашу утилиту. –

+0

Я проверил тот же код, и я еще не нашел ошибок. Я тестировал один и тот же код на разных машинах Windows. Но проблема все еще сохраняется. Для PS/2 клавиатурный код работает нормально, но дает проблему для USB-клавиатур. Я также отформатировал свою батарею CMOS. Но все равно не получаю никакого решения. Когда инициируется «проверка диска», он правильно распознает ключ Escape. Но для приложение «Deframentation» не распознает нажатия клавиш. –

ответ

1

И, наконец, я получил решение. Проблема была связана с типом клавиатуры, которую вы используете i.e, PS2 или USB. вам нужно получить все экземпляры интерфейса клавиатуры и прочитать со всех клавиатур одновременно. Поскольку для платы PS2 на материнской плате существует порт для клавиатуры PS2, он получает приоритет при загрузке. В то время как для клавиатуры USB нам нужно добавить некоторые потому что для системы Windows просто требуется больше времени для регистрации экземпляра класса USB-клавиатуры.

Смежные вопросы