Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 para 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 un funcionamiento eficiente de energía, especialmente en equipos móviles, todos los dispositivos y controladores USB 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. El soporte de suspensión selectiva 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 el soporte básico de Plug and Play.
Cada controlador de función para un dispositivo USB debe implementar una administración agresiva de energía que suspende 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 Desarrollo de controladores con Windows Driver Foundation.
Los dispositivos USB admiten la detección de inactividad durante la 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, todo el concentrador o dispositivo multifunción se puede apagar.
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 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 que proporciona Microsoft implementan la suspensión selectiva a nivel del hardware.
Los controladores de función 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 bus y administra las solicitudes de control de E/S del dispositivo que suspenden y reanuden las funciones del dispositivo. WDF permite que los controladores en modo kernel y en modo de usuario admitan la suspensión selectiva.
Los detalles del código de suspensión selectiva del controlador de función dependen de si el controlador se ejecuta en modo usuario o en modo núcleo. Tenga en cuenta estas directrices:
- Use el marco de controladores en modo de usuario (UMDF) para implementar controladores USB siempre que sea posible. Los controladores en modo de usuario son menos probables para dañar los datos del sistema y son más sencillos de depurar que los controladores en modo kernel.
- Use el marco de controladores 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 política 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 energía debe estar el dispositivo en cualquier momento dado. Solo un controlador en 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á por encima del PPO en su pila de dispositivos, el controlador no debe usar colas gestionadas por energía. Esto es cierto para los controladores UMDF y KMDF. Si llegan solicitudes para colas administradas por energía mientras el dispositivo está suspendido, toda la pila de dispositivos puede paralizarse.
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 que el controlador configuró para la cola (secuencial, paralela o manual). A continuación, el controlador gestiona la solicitud.
Si la cola se administra por energía y el dispositivo no se suspende, el entorno presenta la solicitud al controlador según el tipo de envío configurado.
Sin embargo, si el dispositivo está suspendido, las acciones del marco de trabajo dependen de si el controlador es el PPO para el conjunto 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 el 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 controladores de Windows (WDF)
- Introducción a Plug and Play
- Administración de energía y PnP en controladores KMDF
- Uso de colas de E/S 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