irp是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。

irp相当于ring3下的消息,应用程序对驱动程序进行操作的时候会发出相应的消息,驱动程序根据这些消息做出相应的操作。这些操作通过我们自己编写的派遣函数来决定执行什么样的操作。

看下面流程:

1.为不同的irp类型设置派遣函数

2.编写派遣函数来处理收到不懂类型的irp的不同操作

3.创建设备与符号链接

4.在卸载历程中删除设备与符号链接

流程很简单,但是处理起来就不那么简单了。

代码如下:

阅读全文

, , , ,