Función IoSetNextIrpStackLocation (wdm.h)

La rutina IoSetNextIrpStackLocation establece la ubicación de la pila IRP en un IRP asignado por el controlador a la del autor de la llamada.

Sintaxis

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

Parámetros

[in, out] Irp

Puntero al IRP cuya ubicación de pila se va a establecer.

Valor devuelto

None

Observaciones

En general, esta rutina rara vez la usan los conductores. Lo usan principalmente los controladores que requieren su propia ubicación de pila en un IRP que han asignado, por su cuenta, para enviarlos a otro controlador.

IoSetNextIrpStackLocation no suele ser necesario porque:

  • El controlador recibió el IRP que pasa de otro controlador de nivel superior, por lo que ya posee una ubicación de pila,
  • O bien, el controlador asignó el IRP, pero no necesita su propia ubicación de pila, ya que puede mantener todo lo que necesita en un bloque de contexto cuya dirección se puede pasar a su rutina de IoCompletion .
Se debe tener cuidado si se llama a esta rutina, especialmente al asignar el IRP con IoAllocateIrp o IoMakeAssociatedIrp. El escritor del controlador de asignación debe recordar que una ubicación de pila específica del autor de la llamada no se incluye en el número de ubicaciones de pila requeridas por los controladores de nivel inferior a los que envía IRPs con IoCallDriver. Un controlador debe especificar explícitamente una ubicación de pila para sí misma en su llamada a IoAllocateIrp o IoMakeAssociatedIrp si llama a IoSetNextIrpStackLocation con el IRP devuelto por cualquiera de las rutinas.

Un controlador no puede llamar a IoSetNextIrpStackLocation con ningún IRP que asigne llamando a IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequest o IoBuildSynchronousFsdRequest.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
IRQL Cualquier nivel

Consulte también

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine