Funzione IoSetNextIrpStackLocation (wdm.h)

La routine IoSetNextIrpStackLocation imposta la posizione dello stack IRP in un IRP allocato dal driver su 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 utilizzata 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 non è in genere necessario perché:

  • Il driver ha ricevuto l'IRP che passa da un altro driver di livello superiore, e quindi possiede già una posizione stack,
  • In alternativa, il driver ha allocato l'IRP ma non ha bisogno della propria posizione dello stack perché può mantenere tutto ciò che serve in un blocco di contesto il cui indirizzo può essere passato alla 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 un percorso dello stack per se stesso nella chiamata a IoAllocateIrp o IoMakeAssociatedIrp se chiama IoSetNextIrpStackLocation con l'IRP restituito da una routine.

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

Requisiti

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

Vedi anche

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine