美文网首页
浅谈IRP结构

浅谈IRP结构

作者: Mon7ey | 来源:发表于2017-09-06 15:25 被阅读32次

啥都不说先上图:

图片未经允许禁止使用

什么是IRP

IRP是一个结构体,用于R3和R0之间通信,R3会把请求的数据封装在IRP中发送给R0,R0通过DeviceObject(设备对象)接收到IRP,然后由DeviceObject调用分发函数处理对IRP进行处理,

IRP分为2部分:IRP head(IRP 头)和IRP stack(IRP 栈).IRP head中封装了公用的一些参数,比如IoStatus和存储数据的Buffer,这些数据是共有的.IRP stack可以由多层.Stack中的数据则需要特定的驱动设备才能访问.当我们的DeviceObject拦截到一个IRP并处理完成之后,可以结束这个IRP,也可以继续下发这个IRP.下发IRP到下一层时,Stack的下标就-1.

IRP_HEAD(头):

IO_STATUS:这个成员中有2个子成员.分别是Status和Information

          status:就是反应这次IO的成功状况与否,

          Information:  表示Io的一些额外信息. 比如在读写操作时表示实际读写的字节数, 在其他地方可能有更多的意思.

SystemBuffer:当R3和R0的通信方式是DO_BUFFERED_IO时,IRP->Associated.SystemBuffer中获取IoManager分配的缓存的首地址

MdlAddress:当R3和R0的通讯方式是DRIVECT_IO时,就可以从这个位置获取到IoManager为R3和R0分配的物理地址的首地址.在拿到物理地址后再转换为R0的虚拟地址

UserBuffer: 当R3和R0通信方式是neither_io是,R0直接获取R3传下来的内存地址,在使用UserBuffer是一定要验证地址是否是R3的地址,以确保安全

IRP_STACK(栈):

栈是分层的,一般会有6或8层,每层栈的结构如图所示:

IRP stack

在DriverEntry函数中调用IoGetCurrentIrpStackLocation(IRP)函数,将IRP作为参数传入,就可获得IRP中的栈的地址.栈中保存了MajorFunction(主功能号)、MinorFunction(次功能号)Parameters(Union联合体)、DeviceObject和FileObject,下面介绍这些参数的作用:

MajorFunction(主功能号):

代表了IRP的类型,表示本次IRP是Read、Write、Close或是其他操作;

MinorFunction(次功能号):

代表主功能号的操作中包含的其他操作.举个栗子:比如Delete、Rename操作,这两个操作就可能是Write操作下的子操作,包含在Write中

Parameter(union联合体):

这个union存放着各种操作的struct.当进行Read操作时,就使用Read这个结构体,以此类推.这些struct中存放着对应buffer的长度

相关文章

  • 浅谈IRP结构

    啥都不说先上图: 什么是IRP IRP是一个结构体,用于R3和R0之间通信,R3会把请求的数据封装在IRP中发送给...

  • oracle树形结构层级查询之start with ....co

    浅谈oracle树状结构层级查询 原文地址:浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查...

  • 2020-07-02

    浅谈 浅谈模块设计宏内核 浅谈接口设计Flags 浅谈稳定性设计重试 浅谈人员业务结构设计矩阵式 浅谈接口设计 |...

  • 浅谈算法和数据结构

    注:采转归档,自己学习查询使用 浅谈算法和数据结构: 一 栈和队列浅谈算法和数据结构: 二 基本排序算法浅谈算法和...

  • 学习PCIe协议学习资料

    1. 王齐老师的博客 浅谈PCIe体系结构浅谈CacheMemoryARM与x86 2. yijingjing17...

  • 小红书

    几个话题 1 IRP program 2: IFA 3: tenant insurance 5% 4: realt...

  • 图结构

    https://zh.visualgo.net/graphds 浅谈图形结构https://zh.visualgo...

  • 11.26 Training

    中国加入ICH IRP国际参考价 PAP PSP PCP PHI Consummer finnancing Gov...

  • (313)红黑树-java实现

    引言 根据《算法》第4版。编写红黑树。 理论 参见: 浅谈算法和数据结构: 八 平衡查找树之2-3树 浅谈算法和数...

  • 浅谈作文结构

    今天我们来说一些干货,作文的结构。 我们常见的作文结构有四种:总分总式,并列式,递进式和SQA式。 第一种:总分总...

网友评论

      本文标题:浅谈IRP结构

      本文链接:https://www.haomeiwen.com/subject/lppujxtx.html