Freigeben über


IoSetNextIrpStackLocation-Funktion (wdm.h)

Die IoSetNextIrpStackLocation Routine legt die IRP-Stapelposition in einem vom Treiber zugewiesenen IRP auf die des Aufrufers fest.

Syntax

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

Parameter

[in, out] Irp

Zeiger auf das IRP, dessen Stapelposition festgelegt werden soll.

Rückgabewert

Nichts

Bemerkungen

Im Allgemeinen wird diese Routine selten von Treibern verwendet. Es wird in erster Linie von Treibern verwendet, die eine eigene Stapelposition in einem IRP erfordern, die sie selbst zugewiesen haben, um an einen anderen Treiber zu senden.

IoSetNextIrpStackLocation ist in der Regel nicht erforderlich, weil:

  • Der Treiber hat das IRP erhalten, das er von einem anderen, übergeordneten Treiber übergibt und verfügt daher bereits über einen Stapelspeicherort.
  • Oder der Treiber hat das IRP zugewiesen, benötigt aber keinen eigenen Stapelspeicherort, da er alles, was er in einem Kontextblock benötigt, behalten kann, dessen Adresse an seine IoCompletion- Routine übergeben werden kann.
Achten Sie darauf, wenn diese Routine aufgerufen wird, insbesondere bei der Zuordnung des IRP mit IoAllocateIrp oder IoMakeAssociatedIrp. Der Autor des zugeordneten Treibers muss sich daran erinnern, dass ein aufruferspezifischer Stapelspeicherort nicht in der Anzahl der Stapelspeicherorte enthalten ist, die von den Treibern auf niedrigerer Ebene benötigt werden, an die IRPs mit IoCallDriver-gesendet werden. Ein Treiber muss in seinem Aufruf von IoAllocateIrp oder IoMakeAssociatedIrp explizit einen Stapelspeicherort angeben, wenn er IoSetNextIrpStackLocation mit dem von beiden Routinen zurückgegebenen IRP aufruft.

Ein Treiber kann nicht IoSetNextIrpStackLocation- mit jedem IRP aufrufen, das durch Aufrufen IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequestoder IoBuildSynchronousFsdRequestaufgerufen wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Desktop
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL- Beliebige Ebene

Siehe auch

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver-

IoSetCompletionRoutine