Condividi tramite


Funzione IoSetNextIrpStackLocation (wdm.h)

La routine IoSetNextIrpStackLocation imposta la posizione dello stack IRP in un IRP allocato dal driver a quella del chiamante.

Sintassi

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

Parametri

[in, out] Irp

Puntatore all'IRP la cui posizione dello stack deve essere impostata.

Valore restituito

Nessuno

Osservazioni

In generale, questa routine viene usata raramente dai driver. Viene usato principalmente dai driver che richiedono la propria posizione dello stack in un IRP allocato, da solo, per inviare a un altro driver.

IoSetNextIrpStackLocation in genere non è necessario perché:

  • Il driver ha ricevuto l'IRP che sta passando da un altro driver di livello superiore, e quindi possiede già una posizione dello stack,
  • In alternativa, il driver ha allocato l'IRP, ma non ha bisogno della propria posizione dello stack perché può mantenere tutto ciò di cui ha bisogno in un blocco di contesto il cui indirizzo può essere passato alla relativa routine IoCompletion.
Prestare attenzione se questa routine viene chiamata, soprattutto quando si alloca l'IRP con IoAllocateIrp o IoMakeAssociatedIrp. Il writer del driver di allocazione deve ricordare che una posizione dello stack specifica del chiamante non è inclusa nel numero di posizioni dello stack richieste dai driver di livello inferiore a cui invia i provider di integrazione con IoCallDriver. Un driver deve specificare in modo esplicito una posizione dello stack per se stessa nella chiamata a IoAllocateIrp o IoMakeAssociatedIrp se chiama IoSetNextIrpStackLocation con L'IRP restituito da una delle routine.

Un driver non può chiamare IoSetNextIrpStackLocation con qualsiasi IRP allocato chiamando IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequesto IoBuildSynchronousFsdRequest.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Desktop
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Qualsiasi livello

Vedere anche

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine