jronald
驱动牛犊
驱动牛犊
  • 注册日期2009-06-21
  • 最后登录2010-09-01
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1817回复:1

用IoSkipCurrentIrpStackLocation跳过IRP stack location的问题

楼主#
更多 发布于:2010-05-04 14:28
系统是为IRP在每层驱动分配一个irp stack location吗?
如果跳过一个,是不是最下面一个就没用到?
如果每层驱动都有完成例程,那在完成例程中还能访问到对应的irp stack location吗?如果能,系统是怎么知道有没有被跳 过的?
ifathenb
驱动牛犊
驱动牛犊
  • 注册日期2010-04-28
  • 最后登录2010-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-10 19:26
系统是为IRP在每层驱动分配一个irp stack location吗?
分配irp stack location 是在创建IRP时指定的,系统可以创建,驱动程序也可创建。
如果跳过一个,是不是最下面一个就没用到?

如果每层驱动都有完成例程,那在完成例程中还能访问到对应的irp stack location吗?如果能,系统是怎么知道有没有被跳 过的?
凡是调用了IoSkipCurrentIrpStackLocation的驱动程序,它肯定不会安装完成例程。

注:
irp stack location 只有当前层,下一层的概念。并没有确定的对应关系。
也就是说某驱动程序的irp stack location 可能是第三层,也可能是第四层。这个不重要。
它安装的完成例程在下一层,完成例程里可以访问的irp stack location是当前层。具体是那层不重要。
游客

返回顶部