《Windows内核安全与驱动开发》自学笔记之@IRP

什么是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程序通过符号链接与相应的驱动通信
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lygl35/article/details/112175799