Suspensión selectiva en controladores USB (WDF)
Un controlador de función USB admite la detección de inactividad en tiempo de ejecución mediante la implementación de la suspensión selectiva de USB. Este es el contenido de los desarrolladores de controladores sobre cómo implementar la suspensión selectiva en controladores USB basados en Windows® Driver Foundation (WDF).
Acerca de la suspensión selectiva
La suspensión selectiva es la capacidad de apagar y reanudar posteriormente un dispositivo USB inactivo mientras el equipo al que está conectado permanece en estado de trabajo (S0). Para el funcionamiento eficiente de la energía, especialmente en equipos móviles, todos los dispositivos USB y los controladores deben admitir la suspensión selectiva. Apagar un dispositivo cuando está inactivo, pero mientras el sistema permanece en estado S0, tiene las siguientes ventajas significativas:
- La suspensión selectiva ahorra energía.
- La suspensión selectiva puede ayudar a reducir factores ambientales, como la carga térmica y el ruido.
Si el hardware del dispositivo puede apagarse mientras está inactivo, el controlador debe admitir esta característica. La compatibilidad selectiva con la suspensión en un controlador USB basado en Windows® Driver Foundation (WDF) requiere como máximo algunas devoluciones de llamada adicionales más allá de las necesarias para la compatibilidad básica con Plug and Play.
Cada controlador de función para un dispositivo USB debe implementar una administración agresiva de energía que suspenda un dispositivo inactivo mientras el sistema se está ejecutando. En este tema se describe cómo implementar la suspensión selectiva en un controlador basado en WDF. Si no está familiarizado con WDF, consulte El Kit de controladores de Windows (WDK) y El desarrollo de controladores con Windows Driver Foundation.
Los dispositivos USB admiten la detección de inactividad en tiempo de ejecución a través de la suspensión selectiva usb. La suspensión selectiva permite colocar un dispositivo inactivo en un estado suspendido sin afectar a otros dispositivos conectados al mismo concentrador o, en el caso de un dispositivo multifunción, sin afectar a las demás funciones del dispositivo. Cuando se han suspendido todos los dispositivos o funciones, se puede apagar todo el concentrador o dispositivo multifunción.
Desde la perspectiva del hardware, la suspensión selectiva es un estado físico en un puerto USB. Cuando todas las funciones conectadas al puerto están inactivas, el puerto puede entrar en suspensión selectiva.
Para cumplir con la especificación USB, todos los dispositivos USB deben admitir la suspensión selectiva. Cuando el bus USB está inactivo, el dispositivo debe poder apagarse. Los controladores de concentrador USB proporcionados por Microsoft implementan la suspensión selectiva en el nivel de hardware.
Los controladores de funciones USB deben implementar la suspensión selectiva para sus funciones de dispositivo individuales a través de WDF, que se comunica con los controladores de autobús y administra las solicitudes de control de E/S del dispositivo que suspenden y reanudan las funciones del dispositivo. WDF permite que los controladores en modo kernel y el modo de usuario admitan la suspensión selectiva.
Los detalles del código de suspensión selectiva usb del controlador de función dependen de si el controlador se ejecuta en modo de usuario o en modo kernel. Tenga en cuenta estas directrices:
- Use el marco de controlador en modo de usuario (UMDF) para implementar controladores USB siempre que sea posible. Los controladores en modo de usuario son menos propensos a dañar los datos del sistema y son más fáciles de depurar que los controladores en modo kernel.
- Use el marco de controlador en modo kernel (KMDF) solo si el controlador transmite datos a través de puntos de conexión isócronos o requiere otras características o recursos que solo están disponibles en modo kernel.
Propiedad de la directiva de energía, colas de E/S y suspensión selectiva
El propietario de la directiva de energía (PPO) para una pila de dispositivos es el controlador que determina en qué estado de alimentación debe estar el dispositivo en un momento dado. Solo un controlador de cada pila de dispositivos puede ser el PPO. Normalmente, el controlador de función es el PPO para su dispositivo.
Si el controlador USB admite la suspensión selectiva y está superpuesta por encima del PPO en su pila de dispositivos, el controlador no debe usar colas administradas por energía. Esto es cierto para los controladores UMDF y KMDF. Si llegan solicitudes para colas administradas por energía mientras se suspende el dispositivo, toda la pila de dispositivos puede detenerse.
En la figura 1 se muestra el flujo de solicitudes de E/S a un controlador USB a través de sus colas de E/S.
En la ilustración, llega una solicitud para un controlador USB. El marco agrega la solicitud a la cola adecuada.
Si la cola no está administrada por energía, el marco presenta la solicitud al controlador según el tipo de envío configurado para la cola (secuencial, paralela o manual). A continuación, el controlador controla la solicitud.
Si la cola se administra con energía y el dispositivo no se suspende, el marco presenta la solicitud al controlador según el tipo de envío configurado.
Sin embargo, si el dispositivo está suspendido, las acciones del marco dependen de si el controlador es el PPO para la pila de dispositivos. Si el controlador es el PPO, el marco se comunica con los controladores primarios USB para encender el dispositivo. Una vez reanudado el dispositivo, el marco presenta la solicitud al controlador.
Si el controlador no es el PPO, el marco no realiza más acciones porque solo la PPO puede reanudar el dispositivo. La solicitud permanece en la cola. La pila de dispositivos se detiene si el PPO no recibe ninguna solicitud que haga que reanude el dispositivo.
En esta sección
Tema | Descripción |
---|---|
Suspensión selectiva en controladores UMDF | En este tema se describe cómo los controladores de función UMDF admiten la suspensión selectiva usb. |
Suspensión selectiva en controladores de función KMDF USB | En este tema se describe cómo los controladores de función KMDF admiten la suspensión selectiva usb. |
Temas relacionados
- Marcos de windows Driver Framework (WDF)
- Introducción a Plug and Play
- PnP y administración de energía en controladores KMDF
- Uso de colas de E/S de Power-Managed
- Escritura de controladores USB con WDF
- Información general sobre la implementación de la administración de energía en controladores de cliente USB