Control de IRP de WDM fuera del marco
[Solo se aplica a KMDF]
Cuando el administrador de E/S entrega un paquete de solicitud de E/S (IRP) a un controlador basado en marcos, el marco intercepta el IRP y, a continuación, realiza una de las siguientes acciones:
Procesa el IRP. Por ejemplo, el marco procesa los IRP que contienen IRP_MJ_PNP y IRP_MJ_POWER códigos de función de E/S principales. Al procesar estos IRP, el marco podría comunicarse con el controlador mediante una llamada a las funciones de devolución de llamada de eventos del controlador.
Crea un objeto de solicitud de marco para irP y entrega el objeto de solicitud a una de las colas de E/S del controlador para que el controlador pueda recibirlo, normalmente en un controlador de solicitudes y procesarlo. El marco controla las solicitudes de control de E/S de lectura, escritura y dispositivo de esta manera.
Pasa el IRP al controlador inferior siguiente (si el controlador es un controlador de filtro) o completa el IRP con un valor de estado de STATUS_INVALID_DEVICE_REQUEST (si el controlador no es un controlador de filtro) porque el IRP contiene un código de función de E/S que el marco no admite.
A veces, un controlador debe controlar un código de función de E/S que el marco no admite.
En raras ocasiones, un controlador podría necesitar preprocesar un IRP antes de que el marco lo controle, o es posible que el controlador tenga que procesar un IRP después de que el marco y los controladores de nivel inferior hayan terminado de procesarlo.
Como parte del preprocesamiento, es posible que un controlador necesite reenviar un IRP a una cola de E/S específica.
En los temas siguientes se describen estas situaciones: