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栈单元中。
一个IRP有一个固定的首部和可变数目的IRP栈单元块。IRP栈为向下生长的栈,具有先进后出的特点。
IoGetCurrentIrpStackLocation获取指向当前栈单元的指针。 在许多情况下,使用IoCopyCurrentIrpStackLocationToNext或者IoSkipCurrentIrpStackLocation函数把当前栈单元复制到下一个栈单元,如需要更改下一个栈单元,则使用IoGetNextIrpStackLocation得到指向这个栈单元的指针。
在IRP沿栈向上传递时,栈中每个驱动程序有机会再次处理它。要这样做,驱动程序必须使用IoSetCompletionRoutine函数挂接一个完成例程。该完成例程信息存储在每个驱动程序的IRP栈单元中。
相关文章推荐
- <c:forEach varStatus="status">中 varStatus的属性简介
- android中SELINUX规则分析和语法简介
- kindeditor 用法简介
- 【从0到1学习Java线程池】Java线程池的简介以及使用
- [Evolutionary Algorithm] 进化算法简介
- apache derby简介
- SQL Server 2008高可用性(High Availability)简介(2)—Database Snapshots
- 黑马程序员——装饰类设计模式简介
- Firebug的简介
- C++ iostream迭代器简介
- UML类图简介
- 国内外学习科学研究机构简介…
- Java多线程总结(一):多线程简介及线程的创建
- Tomcat 简介
- wglShareLists使用简介
- 自我简介
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
- MongoDB 简介
- SpringMVC之SpringMVC简介
- hadoop2.5.2学习13-MR之新浪微博TF-IDF算法简介