从我们按下键盘上的键,直到它出现在您的word文档中时会发生什么

Pro*_*ome 12 c hardware assembly winapi

这个问题在我的求职面试中......我只是想看看我是否提供了所有细节......

Pav*_*sky 40

  • 机械开关短路拉起R1电阻端接地
  • 特殊的多路复用器将其转换为消息,以减少电线数量
  • 由嵌入在键盘中的CPU解释的消息
  • 该消息被转换为USB协议消息,并被调制为0到5伏之间的交流电压的一系列电脉冲
  • USB接收集线器定期测量采样线电压
  • 主机集线器控制器将消息转换为数据
  • 数据通过USB总线控制器进入PC,连接到PCIE总线,通过IRQ通知和DMA传输的组合,由总线驱动程序发出
  • 总线驱动程序解释消息并将其沿驱动程序堆栈转发,最终转发给HID驱动程序
  • HID驱动程序与Windows通信,最终导致窗口消息发送到属于msword进程的窗口
  • WM_KEYDOWN由DefWindowProc()转换为WM_CHAR.当密钥关闭时,可以创建多个WM_CHAR.
  • Word应用程序捕获WM_CHAR以向文档模型添加另一个字符并发出UI的重新呈现
  • UI呈现引擎通过加载相应的字体将unicode代码点转换为图形图像
  • 图形引擎计算整个区域的新图像以避免闪烁,并将其逐个像素地放到屏幕上

  • 对不起,但是因为你没有解决这个事实,因为使用USB主机必须在键盘发送到主机之前询问键盘是否有新数据,你的答案是不够的.开玩笑.很好. (3认同)

zed*_*xff 11

  1. 你听到一声咔哒声;)[但这一步没有必要,可能是10日或20日]
  2. 键盘信号到kb控制器
  3. 控制器向CPU发出中断
  4. OS内核看到了中断
  5. OS内核向相应的驱动程序发送中断
  6. 驱动程序告诉CPU从kb控制器读取一个charcode
  7. CPU呢
  8. 驱动程序以某种方式告诉内核将"KEY_DOWN"事件发布到UI子系统中
  9. 内核调度事件
  10. UI子系统检查是否存在活动窗口
  11. 它将KEY_DOWN UI事件发送到活动窗口

...呃..累了:)所以,之后它将调度一个键,更新窗口内容,并调用视频驱动程序/子系统来绘制该char