Función KsForwardAndCatchIrp (ks.h)

La función KsForwardAndCatchIrp reenvía un IRP al controlador especificado después de inicializar la siguiente ubicación de pila y recupera el control del IRP al finalizar desde ese controlador. La función se usa con dispositivos que se pueden apilar y no usar objetos de archivo para comunicarse.

Si se usa un objeto de archivo, el llamador debe inicializar la ubicación de pila actual con ese objeto de archivo antes de llamar a la función KsForwardAndCatchIrp . La función comprueba que hay una nueva ubicación de pila en la que copiar antes de intentar hacerlo. Si no hay una nueva ubicación de pila, la función devuelve STATUS_INVALID_DEVICE_REQUEST. Independientemente de si hay una nueva ubicación de pila, el IRP no se completa.

Sintaxis

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

Parámetros

[in] DeviceObject

Especifica el dispositivo al que se reenvía el IRP.

[in] Irp

Especifica el IRP que se reenvía al controlador especificado.

[in] FileObject

Especifica un valor de objeto de archivo que se va a copiar en la siguiente ubicación de pila. Puede ser NULL para establecer ningún objeto de archivo, pero el valor siempre se copia en la siguiente ubicación de pila. Si se va a conservar el objeto de archivo actual, debe pasarse en este parámetro.

[in] StackUse

Especifica un valor enumerado por KSSTACK_USE. Si el valor es KsStackCopyToNewLocation, los parámetros se copian en la siguiente ubicación de pila. Si el valor es KsStackReuseCurrentLocation, la ubicación de la pila actual se reutiliza cuando se reenvía el IRP y la ubicación de la pila se devuelve a la ubicación actual. Si el valor es KsStackUseNewLocation, la nueva ubicación de pila se usa tal cual.

Valor devuelto

La función KsForwardAndCatchIrp devuelve el resultado de IoCallDriver o devuelve un estado no válido si no hay más profundidad de pila disponible.

Comentarios

El tipo KSSTACK_USE enumeración especifica cómo se usa la pila IRP al reenviar el IRP al controlador siguiente.

Enumeración Descripción
KsStackCopyToNewLocation Indica que los parámetros se van a copiar en la siguiente ubicación de pila.
KsStackReuseCurrentLocation Indica que se va a reutilizar la ubicación de la pila actual.
KsStackUseNewLocation Indica que se va a usar la siguiente ubicación de pila sin modificaciones.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ks.h (incluya Ks.h)
Library Ks.lib