键盘在启动时没有响应?

时间:2014-12-26 05:05:46

标签: c++ keyboard native boot defragmentation

我正在启动时编写一个碎片整理应用程序。但是,问题是在启动时启动监视器并出现黑屏时,它在按下时不响应任何键盘按键?

我的代码是这样的:

  1. 我将NtCreateFile称为对象" Device \ KeyboardClass0",然后返回 成功处理对象。
  2. 然后我用NtCreateEvent创建事件并且它成功返回。
  3. 然后我用句柄和事件调用NtReadFile。
  4. 然后我等待NtWaitForSingleObject让事件发出信号给我 要读的东西。
  5. 当我发出信号时,我将阅读用户按下的键。
  6. 问题是从未到达步骤#5,我正在按下USB 键盘按键没有任何反应,就好像未按下键盘一样。

    相同的代码适用于PS / 2键盘,但使用USB键盘我不能 读什么。

1 个答案:

答案 0 :(得分:1)

最后,我得到了解决方案。问题是你正在使用的键盘类型,即PS2或USB。你需要获得键盘接口的所有实例并同时从所有键盘读取。由于主板上有PS2键盘的端口,它在启动时优先。但是,对于USB键盘,我们需要添加一些延迟是因为,Windows系统只需要更多时间来注册USB键盘类实例。