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 |