您的位置:首页 > 移动开发 > IOS开发

IoSetNextIrpStackLocation routine

2016-02-07 16:25 851 查看

IoSetNextIrpStackLocation routine

IoSetNextIrpStackLocation 为调用者在驱动程序申请的IRP中设置一个IRP stack location。

Syntax

VOID IoSetNextIrpStackLocation(

_Inout_ PIRP Irp

);

Parameters

Irp [in, out]

指向一个IRP,该IRP的stack location 将被设置。

Return value

None

Remarks

在通常情况下这个例程很少被驱动程序使用。一般只用于驱动程序需要将他们自己申请的IRP拥有的stack location,发送给另外一个驱动程序时。

IoSetNextIrpStackLocation 一般不需要使用是因为要么是因为:

驱动接收的IRP是来之其他更高层的驱动程序,因此驱动程序已经拥有它自己关于该IRP的stack location。要么是因为:驱动程序申请了IRP但是并不需要它拥有的stack location ,因为它能在(一个能被传递给IoCompletion 例程的)上下文块保留它需要的所有东西。

小心地使用这个函数,特别是当通过IoAllocateIrp 或者 IoMakeAssociatedIrp申请IRP时, 申请IRP的驱动程序编写者必须记得: 一个调用者指定的stack location 不在(通过IoCallDriver发送IRP的)低层驱动程序请求的stack locations中。一个驱动程序必须在 IoAllocateIrp 或者IoMakeAssociatedIrp 中为它自己显示地指定一个stack location,如果它使用它们之一返回的IRP作为参数调用 IoSetNextIrpStackLocation 。

驱动程序不能为任意一个由IoBuildAsynchronousFsdRequest,IoBuildDeviceIoControlRequest,或者 IoBuildSynchronousFsdRequest.生成的IRP调用 IoSetNextIrpStackLocation 。

Requirements

Target platform

Desktop

Version

Available starting with Windows 2000.

Header

Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h)

IRQL

Any level

See also

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: