IRP简介

IRP是一个内核“对象”,它是一个预定义的数据结构,带有一组对它进行操作的I/O管理器例程。I/O管理器接收一个I/O请求,然后在把它传递到合适的驱动程序栈中的最高驱动程序之前,分配并初始化一个IRP。

一个IRP有一个固定的首部和可变数目的IRP栈单元块。 IRP栈为向下生长的栈,具有先进后出的特点。

IoGetCurrentIrpStackLocation获取指向当前栈单元的指针。 在许多情况下,使用IoCopyCurrentIrpStackLocationToNext或者IoSkipCurrentIrpStackLocation函数把当前栈单元复制到下一个栈单元,如需要更改下一个栈单元,则使用IoGetNextIrpStackLocation得到指向这个栈单元的指针。

在IRP沿栈向上传递时,栈中每个驱动程序有机会再次处理它。要这样做,驱动程序必须使用IoSetCompletionRoutine函数挂接一个完成例程。 该完成例程信息存储在每个驱动程序的IRP栈单元中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值