IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext函数都是将系统的IO_STACK_LOCATION 数组指针向下移动一次,以实现将当前IRP转发给更低一层驱动,那么这两个函数有什么区别呢?
IoSkipCurrentIrpStackLocation只是将IRP简单的转发给更低一层的驱动,至于结果怎么样就不得而知了。
有的时候我们希望得到IRP转发后的状态:比如异步IRP,我们希望当IRP完成后将异步IRP计数器减一,这时候就需要用到IoCopyCurrentIrpStackLocationToNext函数将当前I/O堆栈复制到下一个I/O堆栈,然后为IRP设置完成例程,当IRP完成后会自动调用完成例程,这时在完成例程中对计数器减一即可。
————————————————
版权声明:本文为CSDN博主「奉海」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yfh1985sdq/article/details/45441865