windows驱动学习_Third
一.过滤
在不影响上层和下层接口的情况下,在windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序。(比如一些软件进程保护,就是软件在底层接受到杀进程的消息时,先截获直接返回,即在上层和下层之间又加了一层过滤)
进行过滤的最主要的方法是对一个设备对象进行绑定,通过编程可以生成一个虚拟的设备对象,并“绑定”在另一个设备上。一旦绑定,则本来操作系统发给这个设备的请求会先发送到我们的虚拟设备上。
进行设备绑定的API:AttatchedDevice(绑定有名字的设备) IoAttachDeviceToDeviceStack IoAttachDeviceToDeviceStackSafe(绑定设备指针)
生成设备:IoCreateDevice
从名字获得设备对象:IoGetDeviceObjectPointer
解除绑定:IoDetachDevice
删除设备:IoDeleteDevice
延时:KeDelayExecutionThread
二.符号链接
符号链接其实就是一个别名,可以用一个不同的名字来代表一个设备对象。应用程序是不能直接根据设备名字打开设备的,一般都通过符号链接名来打开。