阅读:1024回复:2
所谓IRP的挂起状态
将一个IRP标志为挂起,是不是说,这个IRP将暂时不被
STARTIO调度?还是有其他的意思? |
|
沙发#
发布于:2003-07-12 11:19
呵呵,这是DDK帮助文档的信息
IoMarkIrpPending marks the given IRP, indicating that a driver\'s Dispatch routine returned STATUS_PENDING because further processing is required by other driver routines. 愚认为在irp分派例程中把IRP设为挂起是表示将该IRP插入请求包队列,告诉I/O管理程序还有例程要处理该IRP,一般而言该例程即为startIO. 然后StartIO从队列的头断取出I/O请求包,并处理之 而不是你说的暂时不被StartIO处理。 |
|
板凳#
发布于:2003-07-12 10:59
将一个IRP标志为挂起,是不是说,这个IRP将暂时不被 if (Irp->PendingReturned) IoMarkIrpPending(Irp); 所有不返回STATUS_MORE_PROCESSING_REQUIRED状态的完成例程都需要这两行代码 为了使系统吞吐量最大化,I/O管理器希望驱动程序推迟其耗时IRP的完成。驱动程序通过调用IoMarkIrpPending函数并在派遣例程中返回STATUS_PENDING来表示完成操作被推迟。 |
|