新阶梯楼405-IRP.ppt

新阶梯楼405-IRP.ppt

IRP sigang@mti.xidian.edu.cn IRP IRP(I/O request packet) 在Windows 2000中,几乎所有的I/O操作都是包驱动的。 IRP的生产者 操作系统会把各种用户模式的请求或者其它系统组件的请求转化为IRP发送给驱动程序。 高层的驱动程序也有可能构造新的IRP发送给低层的驱动程序。 驱动程序中的主要工作就是处理各种各样的IRP,然后完成这个IRP,表明处理完成。 IRP的完成 在标准模型中,至少有两种完成IRP的环境。 DpcForIsr通常用于完成导致最近中断的IRP。 派遣函数也可以在下面这两种情况下完成IRP: 如果请求是错误的则派遣例程应以失败方式完成该请求并返回适当的出错代码。 如果请求要求得到的仅是派遣函数可以容易确定的信息(例如一个询问驱动程序版本号的控制请求),则派遣例程应立即给出回答并完成请求,返回成功状态码。 IRP布局 MDL MdlAddress(PMDL)域指向一个内存描述符表(MDL),它描述了一个与该请求关联的用户模式缓冲区。 如果设备对象的Flags域为DO_DIRECT_IO,则I/O管理器为IRP_MJ_READ或IRP_MJ_WRITE请求创建这个MDL。 如果一个IRP_MJ_DEVICE_CONTROL请求的控制代码指定METHOD_IN_DIRECT或METHO

文档评论(0)

1亿VIP精品文档

相关文档