什么是IRP
I/0 request packets,简称IRP,即输入输出请求包,它是WINDOWS内核的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣历程中进行处理。
作用:
上层应用程序与底层驱动通信,即EXE程序与SYS之间的通讯。
五中常用的IRP类型:
不止这种类型,其它类型可到官网查询
#define IRP_MJ_CREATE 0X00 //对应用户层函数CreateFile()
#define IRP_MJ_CLOSE 0X02 //对应用户层函数CloseHandle()
#define IRP_MJ_READ 0X03 //对应用户层函数ReadFile()
#define IRP_MJ_WRITE 0X04 //对应用户层函数WirteFile()
#define IRP_MJ_DEVICE_CONTROL 0X0e //DeviceIoControl()
过程:
1、创建IRP处理函数
2、在驱动入口函数里面DriverEntry()注册处理函数
3、细化IRP函数
(1)注册派遣函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104144656420.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x5Z2wzNQ==,size_16,color_FFFFFF,t_70
4、应用程序与驱动的通讯
(1)驱动里面创建符号链接
(2)EXE程序通过符号链接与相应的驱动通信