共用方式為


IoSetNextIrpStackLocation 函式 (wdm.h)

IoSetNextIrpStackLocation 例程會將驅動程式配置的 IRP 堆疊位置設定為呼叫端的堆疊位置。

語法

void IoSetNextIrpStackLocation(
  [in, out] PIRP Irp
);

參數

[in, out] Irp

要設定堆疊位置的 IRP 指標。

傳回值

備註

一般而言,驅動程式很少會使用此例程。 它主要是由驅動程式在 IRP 中要求自己的堆疊位置使用,而 IRP 已自行配置,以傳送至另一個驅動程式。

IoSetNextIrpStackLocation 通常不需要,因為:

  • 驅動程式收到它從另一個較高層級驅動程序傳遞的 IRP,因此它已經擁有堆疊位置,
  • 或者,驅動程式已配置 IRP,但不需要自己的堆疊位置,因為它可以保留其位址可以傳遞至其 IoCompletion 例程的內容區塊中所需的一切。
如果呼叫此例程,特別是使用 IoAllocateIrpIoMakeAssociatedIrp配置 IRP 時,應該小心。 配置驅動程式的寫入器必須記住,呼叫端特定的堆疊位置不包含在較低層級驅動程式所需的堆疊位置數目中,而該驅動程式會使用 IoCallDriver傳送 IRP。 如果驅動程式呼叫IoSetNextIrpStackLocation,驅動程式必須在呼叫IoAllocateIrpIoMakeAssociatedIrp時明確指定堆疊位置,並搭配任一例程傳回的 IRP。

驅動程式無法透過呼叫 IoBuildAsynchronousFsdRequestIoBuildDeviceIoControlRequestIoBuildSynchronousFsdRequest 所配置的任何 IRP 呼叫 IoSetNextIrpStackLocation

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL 任何層級

另請參閱

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine