Arquitectura de emulación de dispositivos USB
En este artículo se describe la arquitectura de emulación de dispositivos (UDE) USB, que emula el comportamiento de un controlador host USB y un dispositivo conectado. Mediante el uso de UDE, un hardware que no es USB puede comunicarse con las capas superiores mediante los controladores del lado host USB en Windows.
Controladores de UDE
En la imagen anterior,
- Controlador del concentrador USB (Usbhub3.sys) es un controlador del marco de controladores en modo kernel (KMDF). El controlador de concentrador es responsable de administrar los concentradores USB y sus puertos, enumeración y creación de objetos de dispositivo físico (PPO) de dispositivos USB y otros concentradores que podrían estar conectados a sus puertos de bajada.
- La extensión del controlador host USB (Ucx01000.sys) es una capa de abstracción para el controlador de concentrador de la pila y proporciona un mecanismo genérico para las solicitudes de puesta en cola al controlador host subyacente.
- La extensión de clase UDE (UdeCx) llama al controlador cliente UDE a través de funciones de devolución de llamada implementadas por el cliente. La extensión de clase proporciona rutinas para que el controlador cliente cree objetos UDE y los administre.
- El controlador cliente UDE administra el hardware, interactuando tanto con el marco de controladores de Windows (WDF) como con las API de UDE. El borde superior se comunica con la extensión de clase WDF y UDE mediante construcciones USB. Su borde inferior se comunica con el hardware mediante la interfaz del hardware.
- Hardware personalizado: por ejemplo, un hardware de PCI se puede emular para que funcione como un dispositivo USB.
Nodos de dispositivo UDE
Estas son las pilas de dispositivos cargadas para el controlador cliente UDE: