本章讲了几种过滤键盘的方法,说实话越往后越深,写的很全,后面我没看懂,下面是我看懂的部分记录了下来。
文章开头讲了几个知识点:
1) 符号链接,用一个不同的明智代表一个设备对象,上层可以通过该名称访问相应的设备对象。
2) ZwCreateFile,在内核中用于打开文件(设备对象)的函数,是应用层的Createfile在内核层的实现
3) PDO(物理设备对象, physical device object),PDO是设备占最下面的设备对象,所以相比较于PDO和FDO(function device object),PDO肯定是处于FDO的下方,可以认为PDO是物理设备在系统中的对应对象
4) 函数IoGetAttachDevice可以获得一个设备所在设备栈最顶端的那个对象
这些知识点在文中都有使用,而且在编写驱动的过程中也是经常需要使用的。
本文讲了这样一句话,感觉很正确,过滤与反过滤的过程中,关键在于“谁将第一个得到信息”,所以我们要分析键盘的整体结构来一步一步考虑该如果在对应的位置去过滤该设备。如下图所示键盘的整体架构: