Windows驱动开发笔记(二)——键盘过滤

本驱动主要是可以过滤键盘的按键信息并修改,其原理大致为:

1.使用ObReferenceObjectByName(…)打开键盘驱动Kbdclass;

2.依次遍历Kbdclass驱动下的所有设备,用IoAttachDeviceToDeviceStack(…)为每个实际设备绑定过滤设备对象;

3.设置各种IRP请求分发函数,主要是IRP_MJ_READ的分发函数较为特殊——如果该驱动已经是最底层,则直接用IoCompleteRequest(…)表示该IRP请求完成;否则IoSetCompletionRoutine(…)设置完成函数;

4.编写IRP_MJ_READ的完成函数,主要功能就是输出该IRP请求的键盘按键信息,如有需要还可以更改。

5.编写入口函数DriverEntry(…),内容就是设置各种分发函数,卸载驱动函数,并绑定所有过滤设备。

具体源码参见附件,建议在虚拟机下安装调试,用DebugView来看按键信息。

点击下载