键盘在启动时没有响应

keyboard is not responding at boot time?

本文关键字:响应 启动 键盘      更新时间:2023-10-16

我正在启动时编写碎片整理应用程序。但是,问题是在启动时,当显示器启动并出现黑屏时,按下时它没有响应任何键盘键?

我的代码是这样的:

  1. 我调用 NtCreateFile 来对象"设备\键盘类 0",它返回成功使用对象的句柄。
  2. 然后我使用 NtCreateEvent 创建事件,它成功返回。
  3. 然后我使用句柄和事件调用 NtReadFile。
  4. 然后我在 NtWaitForSingleObject 上等待事件在有要读的东西。
  5. 当我收到信号时,我将读取用户按下的键。

问题是步骤#5从未到达,并且我正在按USB键盘键,什么也没发生,好像没有按下键盘一样。

相同的代码适用于PS/2键盘,但使用USB键盘我不能阅读任何内容。

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