DeviceWake
O membro DeviceWake do DEVICE_CAPABILITIES contém o estado de energia do dispositivo mais baixo (menos alimentado) do qual o dispositivo pode sinalizar um evento de ativação ou PowerDeviceUnspecified se o dispositivo não puder ser ativado em resposta a um sinal externo.
O motorista do ônibus define esse valor. Um driver de nível superior pode alterar o valor para um estado de maior potência. Por exemplo, se o driver de barramento definir DeviceWake como D3, mas um driver mais acima da pilha do dispositivo der suporte à ativação somente de D2, o driver de nível superior poderá alterar o valor para D2.
Observe que, se um driver alterar DeviceWake, ele também precisará alterar SystemWake para evitar conflitos com os mapeamentos de sistema para dispositivo na matriz DeviceState . Por exemplo, suponha que o motorista do ônibus defina o seguinte:
DeviceState[PowerSystemSleeping1] = PowerDeviceD1
DeviceState[PowerSystemSleeping2] = PowerDeviceD3
DeviceWake = PowerDeviceD3
SystemWake = PowerSystemSleeping2
Se um driver de nível superior determinar que seu dispositivo não pode ativar o sistema de D3, mas apenas de D2 ou superior, ele poderá alterar DeviceWake para D2. No entanto, essa alteração faz com que o mapeamento de S2 para D3 seja impossível. Lembre-se de que a matriz DeviceState lista o estado de energia do dispositivo mais alto que um dispositivo pode dar suporte para um determinado estado de energia do sistema. Se o estado de energia do sistema no exemplo for PowerSystemSleeping2, o estado de energia do dispositivo não poderá ser PowerDeviceD2. Para eliminar esse problema, o driver também deve alterar SystemWake para PowerSystemSleeping1. O mesmo vale para as configurações wakeFromDx e DeviceDx . Um driver deve garantir que todas as alterações feitas em SystemWake ou DeviceWake não entrem em conflito com os valores WakeFromDx e DeviceDx . Os valores de WakeFromDx e DeviceDx refletem características de hardware que um driver não pode alterar.
Se os membros SystemWake e DeviceWake forem diferentes de zero (ou seja, não PowerSystemUnspecified), o dispositivo e seus drivers dão suporte à ativação nesse sistema.
No hardware não ACPI, o membro DeviceWake contém zero (PowerSystemUnspecified).