故障时,事件信息如下图所示。
这说明Windows不能识别键盘,是因为i8042prt不能正确启动这个设备导致。
而上面的解决办法正是让windows使用kbdclass驱动键盘。
这种在两个可用驱动中设置选择策略的组件,就是Driver Filter。正如注册表中的名字所示,令上层组件选择kbdclass驱动键盘,而不是i8042prt。
Driver Filter机制在科研中的体现,就是这篇FAST’16的文章(sRoute: Treating the Storage Stack Like a Network),基于Windows的Driver Filter特性为不同的I/O选择各自的路径。由于文章中没有给出实现方法,我大胆推测可能就是设置了不同的注册表键值来控制各种I/O使用的路径。:)