Arquitectura de UMDF
En este tema se describe cómo el administrador de controladores crea una pila de dispositivos en modo de usuario y cómo el proceso de host, el reflector y el administrador de controladores procesan una solicitud de E/S que una aplicación envía a un controlador de User-Mode Driver Framework (UMDF).
De forma similar a una pila en modo kernel, la construcción y desmontaje de una pila en modo de usuario se controla mediante eventos de Plug and Play (PnP). Una vez creada la pila del modo kernel, el reflector notifica al administrador de controladores que inicie la construcción de la pila del modo de usuario. El administrador de controladores inicia el proceso de host del controlador y proporciona información suficiente para el proceso iniciado para compilar la pila del modo de usuario. De este modo, la pila en modo de usuario se puede considerar una extensión de la pila en modo kernel.
El proceso de host del controlador proporciona el entorno de ejecución para los controladores en modo de usuario y enruta los mensajes entre los controladores de la pila del modo de usuario. El reflector usa un mecanismo de comunicación entre procesos basado en mensajes para comunicarse con el administrador de controladores y el proceso de host.
Para enviar una solicitud de E/S a un controlador UMDF, una aplicación llama a una función de E/S de archivos Win32, como CreateFile, ReadFileEx, CancelIoEx o DeviceIoControl. Cuando el reflector recibe una solicitud de la aplicación cliente, envía la solicitud al proceso de host de controlador adecuado. A continuación, el proceso de host del controlador enruta la solicitud a la parte superior de la pila de dispositivos en modo de usuario correcta.
La solicitud se completa mediante uno de los controladores de la pila del modo de usuario o reenviada por uno de los controladores de nuevo al reflector. Cuando el reflector recibe una solicitud de la pila de controladores en modo de usuario, envía la solicitud a la pila del modo kernel para su finalización.