IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext区别

来源:互联网 发布:html调用php 编辑:程序博客网 时间:2024/05/18 13:29

    IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext函数都是将系统的IO_STACK_LOCATION 数组指针向下移动一次,以实现将当前IRP转发给更低一层驱动,那么这两个函数有什么区别呢?

    IoSkipCurrentIrpStackLocation只是将IRP简单的转发给更低一层的驱动,至于结果怎么样就不得而知了。

    有的时候我们希望得到IRP转发后的状态:比如异步IRP,我们希望当IRP完成后将异步IRP计数器减一,这时候就需要用到IoCopyCurrentIrpStackLocationToNext函数将当前I/O堆栈复制到下一个I/O堆栈,然后为IRP设置完成例程,当IRP完成后会自动调用完成例程,这时在完成例程中对计数器减一即可。

0 0