DeviceWake
El miembro DeviceWake de DEVICE_CAPABILITIES contiene el estado de alimentación del dispositivo más bajo (menos alimentado) desde el que el dispositivo puede señalar un evento de reactivación o PowerDeviceUnspecified si el dispositivo no puede reactivarse en respuesta a una señal externa.
El controlador de autobús establece este valor. Un controlador de nivel superior puede cambiar el valor a un estado de mayor potencia. Por ejemplo, si el controlador de autobús establece DeviceWake en D3, pero un controlador más allá de la pila de dispositivos admite la reactivación solo desde D2, el controlador de nivel superior puede cambiar el valor a D2.
Tenga en cuenta que si un controlador cambia DeviceWake, es posible que también tenga que cambiar SystemWake para evitar conflictos con las asignaciones del sistema a dispositivo en la matriz DeviceState . Por ejemplo, supongamos que el controlador de autobús establece lo siguiente:
DeviceState[PowerSystemSleeping1] = PowerDeviceD1
DeviceState[PowerSystemSleeping2] = PowerDeviceD3
DeviceWake = PowerDeviceD3
SystemWake = PowerSystemSleeping2
Si un controlador de nivel superior determina que su dispositivo no puede reactivar el sistema desde D3, pero solo desde D2 o superior, puede cambiar DeviceWake a D2. Sin embargo, este cambio hace que la asignación de S2 a D3 sea imposible. Recuerde que la matriz DeviceState muestra el estado de energía del dispositivo más alto que un dispositivo puede admitir para un estado de alimentación del sistema determinado. Si el estado de alimentación del sistema en el ejemplo es PowerSystemSleeping2, el estado de alimentación del dispositivo no puede ser PowerDeviceD2. Para eliminar este problema, el controlador también debe cambiar SystemWake a PowerSystemSleeping1. Lo mismo sucede con la configuración wakeFromDx y DeviceDx . Un controlador debe asegurarse de que los cambios que realice en SystemWake o DeviceWake no entren en conflicto con los valores WakeFromDx y DeviceDx . Los valores de WakeFromDx y DeviceDx reflejan las características de hardware que un controlador no puede cambiar.
Si los miembros SystemWake y DeviceWake no son cero (es decir, no PowerSystemUnspecified), el dispositivo y sus controladores admiten la reactivación en este sistema.
En el hardware que no es ACPI, el miembro DeviceWake contiene cero (PowerSystemUnspecified).