Queuing and Dequeuing IRPs中文翻译.doc
《Queuing and Dequeuing IRPs中文翻译.doc》由会员分享,可在线阅读,更多相关《Queuing and Dequeuing IRPs中文翻译.doc(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、大连民族学院毕业设计(论文)外文文献原文及译文学 院: 计算机科学与工程 专 业: 网络工程 班 级: 网络062班 学生姓名: 刘安旭 指导教师: 王立明 等待和出列的IRP因为I / O管理器支持异步多任务和多线程在一个系统,尤其是在多处理器的机器,I/ O可以请求一个快于驱动程序的设备完成处理,。因此,IRP要绑定到已经忙于处理其它IRP的设备,必须在驱动程序中等待。因此,最底层的驱动程序需要具备以下条件之一:StartIo例程,它的I / O管理器调用已经在系统提供的IRP队列中等待的I / O操作IRP驱动程序(见IoStartPacket)。内部IRP的等待和出列机制,使用中的管理
2、IRP驱动程序的处理速度能够满足他们。驱动程序可以使用设备队列,互锁队列,或取消安全的队列。更多信息,参阅Driver-Managed IRP Queues。只有最底层的设备驱动程序,能够满足和完成所有的IRP派遣例程,不需要StartIo例程和IRP驱动程序管理的队列。高层次的驱动程序多数没有StartIo。大多数中间驱动程序也没有StartIo内部队列。在IRP IoCompletion例程中,中间驱动程序通常可以通过使用IRP的有效的参数进行调度和后处理.。下面的介绍,是大体而言,设计的考虑决定是否实行内在StartIo常规程序,和driver-managed等候IRP。StartIo程
3、序驱动只有设备驱动程序能够处理电脑的外围设备的I / O操作,并可以实现StartIo常规事务。对于这些驱动程序、I / O管理器提供IoStartPacket和IoStartNextPacket程序队列和出入队IRP的system-supplied IRP队列。更多关于StartI的信息,参阅Writing a StartIo Routine.内部驱动IRP队列如果一个装置能支持多个并行的I / O操作,它的lowest-level设备驱动程序必须建立内部请求队列管理自己的等待IRP。例如, 因为系统序列驱动支持全双工系列设备,所以它需要保持独立队列的读、写、净化等业务。高层次的驱动向一些潜
4、在的设备驱动程序发送请求,同样也可以保持内部IRP队列。例如,文件系统驱动几乎总是有内部等候IRP。更多信息,参阅Driver-Managed IRP Queues.内部队列同步device-dedicated思想的驱动和和最高层的驱动程序,使用executive worker线程(包括文件系统驱动)通常都建立了自己的等待IRP。队列是共享的驱动程序思想或driver-supplied worker-thread调用的例程和其它驱动过程IRP。一个驱动程序,实现自身的队列的结构必须确保进入队和出队是同步的的。任务驱动编写者为了使任务简单化,提供了一个标准的框架IRP队列,你可以在IRP队列中实
5、施。更多信息,参阅Cancel-Safe IRP Queues。这是实现IRP队列最便捷的方式。驱动程序也可以实现IRP队列和取消逻辑同步。例如,一个驱动可以使用一个联锁队列。驱动程序的调度程序插入IRP队列和driver-created线程或者驱动程序的worker-thread通过调用ExInterlockedXxxList支持程序回收移除它们。举例来说,这个系统控制器驱动使用一个软盘联锁队列。它的device-dedicated线程加工处理一样,是由其他IRP的StartIo设备驱动程序和相同其他IRP的DpcForIsr设备驱动程序处理。包涵StartIo内部队列的驱动程序一个驱动程序
6、,经营自己的内部队列也可以有一个StartIo例行程序,但不需要。大多数lowest-level驱动装置都有一个StartIo例行程序或管理自己的队列中,但不能同时适用。IRP一个例外是SCSI港,它有一个StartIo驱动程序和管理内部队列的IRP。I / O管理器队列IRP港口驱动程序的StartIo例行的设备等待联系在一起的driver-created设备对象表示一个SCSI HBA)。SCSI港口的驱动程序也设立和管理设备,每个目标为IRP队列的设备(对应)在SCSI逻辑单位HBA-driven SCSI总线的机器。驱动程序使用它的SCSI港举行IRP队列的辅助设备发送的小型电脑标准介
7、面类驱动在LU-specific队列在任何设备SCSI总线特别繁忙。实际上,这个驱动程序的补充,LU-specific装置队列使得SCSI港口驱动程序同步操作,通过HBA异构SCSI装置,同时保持每台设备的SCSI巴士HBA一样忙碌。完成IRP完成一个IRP”是一种速记,意思是“让所有的词的驱动程序堆栈完成一个I / O操作。”这个IRP请求后,已经完成,I / O管理器通知,要求启动应用程序的I / O操作完成。当驱动程序已经完成了处理一个IRP,它要求IoCompleteRequest(通常是在一个DpcForIsr程序)。这导致I / O管理器来确定是否建立了IoCompletion高层
8、次驱动程序的IRP。如果是这样的话,每个IoCompletion程序被称为,反过来,直到所有的分层驱动程序在链条已完成IRP。当所有的驱动程序都完成IRP,I / O管理器的状态将原者的操作。注意到一个更高的驱动程序driver-created设立了一个IRP必须提供一个IoCompletion常规释放出的IRP。完成IRP的时机驱动程序应该启动时IRP完成下列条件:驱动程序决定IRP处理因无效的参数不能进步或其他情况。驱动程序能处理请求的I / O操作的IRP的驱动程序堆栈,和操作完成。这个IRP被取消。(参阅Canceling IRPs)如果这些条件无法满足,一名驱动程序的调度程序必须通过
9、这个IRP的next-lower驱动,或者它必须处理工艺的I / O请求。如果有一个条件,驱动程序必须IoCompleteRequest打调用。如果驱动程序完成一个请求,因为处理不能进步,或如果它完成请求处理请求的操作不存取装置,它通常称IoCompleteRequest从其分派程序。更多信息,参阅Completing IRPs in Dispatch Routines.如果驱动程序要访问一个装置来满足要求,它通常称IoCompleteRequest从DpcForIsr例行程序。这些程序进行了广泛的服务中断。在分派程序完成IRP这节描述完成IRP在分派程序,包含以下的主题: 如何完成一个IRP
10、在分配程序什么时候完成一个IRP在分配程序如何在分配程序完成IRP 如果一个输入IRP可以完成,调度程序立刻做如下:1设置变更状态和信息的成员的I / O地位IRP块与适当的价值,在一般。分配程序集的地位要么STATUS_SUCCESS或适当的错误(STATUS_Xxx),可值的一个支持程序或,以较低的同步请求时,驱动程序。如果一个底层驱动,更高回报STATUS_PENDING驱动程序不应该叫IoCompleteRequest为IRP,只有一处例外:高等级的驱动可以用一个事件同步的IoCompletion常规和它之间分配程序,在这种情况下,IoCompletion常规信号并返回STATUS_M
11、ORE_PROCESSING_REQUIRED。调度程序的事件,然后等待调用IoCompleteRequest完成IRP。它集信息的字节数,如果要求成功转移数据传送,如读或写的要求,是满意的。这是一个非常有价值的信息,来设置不同的具体要求,根据它完成IRP其他STATUS_SUCCESS。这是一个非常有价值的信息,来设置不同的具体要求,根据IRP,它警告STATUS_XXX。例如,它将信息的字节数为这样一种警告作为转移STATUS_BUFFER_OVERFLOW。通常,它集信息到零,它为要求,以一个错误STATUS_XXX。 2调用IoCompleteRequest IRP和PriorityB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Queuing and Dequeuing IRPs中文翻译 IRPs 中文翻译
限制150内