您的位置:首页 > 其它

IRP简介

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

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

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

在IRP沿栈向上传递时,栈中每个驱动程序有机会再次处理它。要这样做,驱动程序必须使用IoSetCompletionRoutine函数挂接一个完成例程。该完成例程信息存储在每个驱动程序的IRP栈单元中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: