escape
驱动老牛
驱动老牛
  • 注册日期2002-02-01
  • 最后登录2004-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1023回复:2

所谓IRP的挂起状态

楼主#
更多 发布于:2003-07-11 16:38
将一个IRP标志为挂起,是不是说,这个IRP将暂时不被
STARTIO调度?还是有其他的意思?
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-12 10:59
将一个IRP标志为挂起,是不是说,这个IRP将暂时不被
STARTIO调度?还是有其他的意思?


if (Irp->PendingReturned)
  IoMarkIrpPending(Irp);
 
所有不返回STATUS_MORE_PROCESSING_REQUIRED状态的完成例程都需要这两行代码

为了使系统吞吐量最大化,I/O管理器希望驱动程序推迟其耗时IRP的完成。驱动程序通过调用IoMarkIrpPending函数并在派遣例程中返回STATUS_PENDING来表示完成操作被推迟。
bestrafi
驱动牛犊
驱动牛犊
  • 注册日期2003-05-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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处理。
游客

返回顶部