IRP详解(3)----UMDF下处理流程

      WDM和MDF下IRP的处理流程是不相同的,其中MDF又有UMDF何KMDF之分,我们先来看看UMDF中IRP的详细处理,如下图所示:

1:I/O管理器将IRP传递给位于内核模式设备堆栈中的顶层驱动对象(Up Device Object)。

2:位于内核的反射器将该IRP打包发送给UMDF Host进程。

3:IRP包传送给负责处理它的驱动后,framework创建一个WDF请求对象并把它插入进相应的队列,亦或者调用相应的回调函数来处理该IRP。

4:当UMDF驱动处理完IRP请求后,framework调用转发器(dispatcher), 转发器将发起一个Windows I/O请求给底层驱动对象(Down Device Object)。

    注意:此时的IRP已经不是最开始发起的IRP

5:底层驱动对象收到新IRP之后将其发送到更下一层的内核模式驱动(Kernel-mode Drivers),内核模式下的驱动将其发送至相应的驱动处理。

6:当IRP完成时,转发器将会收到完成信息,并告诉framework, framework将WDF请求设置成完成状态。

7:framework调用I/O completion回调函数。

8:当最后UMDF的I/O completion回调函数返回后,framework会将完成标识符和数据传递给反射器。

9:反射器将原始的IRP设置成完成,并告之I/O管理器,最后由I/O管理器来通知上层程序本次IRP操作已经完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值