Administración de energía winUSB
WinUSB usa las máquinas de estado KMDF para la administración de energía. Las directivas de energía se administran mediante llamadas a WinUsb_SetPowerPolicy.
Para modificar el comportamiento de energía de WinUSB, la configuración predeterminada del Registro se puede modificar en el INF del dispositivo. Estos valores se deben escribir en la ubicación específica del dispositivo en el Registro agregando los valores en el HW. Sección AddReg del INF.
Los valores del Registro descritos en la lista siguiente se pueden especificar en el INF del dispositivo para modificar el comportamiento de energía.
Reactivación del sistema
Esta característica se controla mediante la configuración del Registro DWORD SystemWakeEnabled . Este valor indica si el dispositivo debe poder reactivar el sistema desde un estado de baja potencia.
HKR,,SystemWakeEnabled,0x00010001,1
- Un valor de cero o la ausencia de este valor indica que el dispositivo no puede reactivar el sistema.
- Para permitir que un dispositivo active el sistema, establezca SystemWakeEnabled en un valor distinto de cero. Se habilita automáticamente una casilla de la página Propiedades del dispositivo para que el usuario pueda invalidar la configuración.
Nota:
El cambio de la configuración SystemWakeEnabled no tiene ningún efecto en la suspensión selectiva, este valor del Registro solo pertenece a la suspensión del sistema.
Suspensión selectiva
La suspensión selectiva se puede deshabilitar mediante cualquiera de los distintos sistemas o configuraciones de WinUSB. Una única configuración no puede forzar a WinUSB a habilitar la suspensión selectiva.
La siguiente configuración de directiva de energía que se especifica en el parámetro PolicyType de WinUsb_SetPowerPolicy afecta al comportamiento de la suspensión selectiva:
- AUTO_SUSPEND Cuando se establece en cero, no establece el dispositivo en modo de suspensión selectiva.
- SUSPEND_DELAY Establece el tiempo entre el momento en que el dispositivo se vuelve inactivo y cuando WinUSB solicita al dispositivo que entre en suspensión selectiva.
En la tabla siguiente se muestra cómo afectan las claves del Registro a la característica de suspensión selectiva.
Clave del Registro | Descripción |
---|---|
DeviceIdleEnabled | Se trata de un valor DWORD. Este valor del Registro indica si el dispositivo es capaz de apagarse cuando está inactivo (suspensión selectiva).
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | Cuando se establece en un valor distinto de cero, suspende el dispositivo aunque no admita RemoteWake. |
UserSetDeviceIdleEnabled | Este valor es un valor DWORD. Este valor del Registro indica si se debe habilitar una casilla en la página Propiedades del dispositivo que permite a un usuario invalidar los valores predeterminados inactivos. Cuando UserSetDeviceIdleEnabled está establecido en un valor distinto de cero, la casilla está habilitada y el usuario puede deshabilitar el apagado del dispositivo cuando está inactivo. Un valor de cero o la ausencia de este valor indica que la casilla no está habilitada.
UserSetDeviceIdleEnabled se omite si DeviceIdleEnabled no está establecido. HKR,,UserSetDeviceIdleEnabled,0x00010001,1 |
DefaultIdleState | Se trata de un valor DWORD. Este valor del Registro establece el valor predeterminado de la configuración de directiva de energía de AUTO_SUSPEND. Esta clave del Registro se usa para habilitar o deshabilitar la suspensión selectiva cuando un identificador no está abierto al dispositivo.
Este valor se omite si DeviceIdleEnabled no está establecido. HKR,,DefaultIdleState,0x00010001,1 |
DefaultIdleTimeout | Se trata de un valor DWORD. Este valor del Registro establece el estado predeterminado de la configuración de directiva de energía de SUSPEND_DELAY. El valor indica la cantidad de tiempo en milisegundos que hay que esperar antes de determinar que un dispositivo está inactivo. HKR,,DefaultIdleTimeout,0x00010001,100 |
Detección de inactividad
Todas las operaciones de escritura y control transfieren el dispositivo al estado de alimentación D0 y restablecen el temporizador de inactividad. Las colas del punto de conexión IN no se administran con energía. Las solicitudes de lectura reactivan el dispositivo cuando se envían. Sin embargo, un dispositivo puede estar inactivo mientras espera una solicitud de lectura.
Temas relacionados
- Arquitectura y módulos de WinUSB
- Elección de un modelo de controlador para desarrollar un controlador de cliente USB
- Instalación de WinUSB (Winusb.sys)
- Cómo acceder a un dispositivo USB mediante funciones winUSB
- Funciones WinUSB para la modificación de la directiva de canalización
- Funciones de WinUSB
- Introducción a WinUSB para desarrolladores
- WinUsb_GetPowerPolicy
- WinUsb_SetPowerPolicy