阅读:1817回复:1
用IoSkipCurrentIrpStackLocation跳过IRP stack location的问题
系统是为IRP在每层驱动分配一个irp stack location吗?
如果跳过一个,是不是最下面一个就没用到? 如果每层驱动都有完成例程,那在完成例程中还能访问到对应的irp stack location吗?如果能,系统是怎么知道有没有被跳 过的? |
|
沙发#
发布于: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是当前层。具体是那层不重要。 |
|