Suporte a Power-Down ociosas
Alguns dispositivos podem entrar em um estado Dx (baixa potência) enquanto o sistema permanece em seu estado de trabalho (S0). A partir Windows 8, os dispositivos podem fazer a transição para um estado de energia funcional de baixa potência (Fx) antes de entrar em um estado Dx. Para esses dispositivos, a estrutura inicia a redução da potência do dispositivo ou componente depois que o dispositivo estiver ocioso (não usado) por um período predeterminado (e configurável).
Alguns desses dispositivos também podem disparar um sinal de ativação no barramento quando detectam um evento externo. O motorista do ônibus responde a esse sinal e a pilha do driver restaura o dispositivo para seu estado de trabalho. (Os dispositivos que não detectam eventos externos permanecem em um estado de baixa potência até que a estrutura solicite que o motorista do barramento inicie a restauração do dispositivo para seu estado de trabalho.)
Se o dispositivo ou componente puder ser desligado quando estiver ocioso, a função de retorno de chamada EvtDriverDeviceAdd no proprietário da política de energia deverá executar as duas etapas a seguir:
Chame WdfDeviceAssignS0IdleSettings para especificar:
- O estado de baixa potência que o dispositivo inserirá
- A quantidade de tempo que o dispositivo deve permanecer ocioso antes que seu estado de energia seja reduzido
- Se o dispositivo pode detectar um evento externo e disparar um sinal de ativação no barramento
- Se os usuários podem controlar as configurações ociosas do dispositivo
- Se a funcionalidade de desligamento ocioso do dispositivo está habilitada ou desabilitada
- Se o dispositivo retornará ao estado de trabalho (D0) quando o sistema retornar ao estado de trabalho (S0)
- Se o valor de tempo limite ocioso para o dispositivo é determinado pela PoFx (estrutura de gerenciamento de energia)
- Se a estrutura pode colocar o dispositivo no estado de energia D3cold quando o período de tempo limite ocioso expirar
Para obter mais informações sobre essas configurações, consulte a estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , bem como Suporte a estados de energia funcionais.
Chame WdfDeviceInitSetPowerPolicyEventCallbacks para registrar as seguintes funções de retorno de chamada de evento, se você precisar delas para seu dispositivo:
- EvtDeviceArmWakeFromS0, que permite que o hardware do dispositivo (não o barramento) responda a um evento de ativação externo
- EvtDeviceDisarmWakeFromS0, que desabilita a capacidade do dispositivo (não a capacidade do barramento) de responder a um evento de ativação externo
- EvtDeviceWakeFromS0Triggered, que informa ao motorista que o ônibus detectou um sinal de ativação.
Condições ociosas
A estrutura considera o dispositivo ocioso e começa a contar o tempo ocioso, quando todas as seguintes condições são atendidas:
- Nenhuma das filas gerenciadas por energia criadas para essa instância de dispositivo tem solicitações aguardando na fila ou enviadas para o driver. Se uma solicitação foi enviada para o driver e o driver a enviou para um destino de E/S, a solicitação ainda está relacionada à fila. O dispositivo não será considerado ocioso, a menos que o driver tenha usado a opção enviar e esquecer para enviar a solicitação. As solicitações em filas gerenciadas sem energia não são contadas em direção ao dispositivo ocioso.
- Se o driver anteriormente chamado WdfDeviceStopIdle, o driver posteriormente chamou WdfDeviceResumeIdle.
- Se o proprietário da política de energia for um motorista de ônibus, nenhum dos dispositivos filho do motorista do ônibus estará em D0.
Se o driver (ou um usuário) habilitar a energia ociosa para seu dispositivo, talvez seja necessário usar o método WdfDeviceStopIdle . Se o dispositivo estiver em seu estado de trabalho (D0), esse método impedirá que o dispositivo seja idling até que o driver chame WdfDeviceResumeIdle. Se o dispositivo estiver em um estado de baixa potência quando o driver chamar WdfDeviceStopIdle e se o sistema estiver em seu estado de trabalho (S0), a estrutura solicitará que o driver de barramento restaure o dispositivo para seu estado de trabalho (D0). Cada chamada bem-sucedida para WdfDeviceStopIdle deve ser correspondida por uma chamada para WdfDeviceResumeIdle. Para obter informações sobre como exibir a contagem de referência de energia no depurador, consulte Depurando vazamentos de referência de energia no WDF.
Para obter mais informações sobre quando o driver pode ter que chamar WdfDeviceStopIdle, consulte a página de referência do método.
Se o dispositivo puder se ativar de um estado de baixa potência, o driver do barramento do dispositivo participará da ativação do dispositivo. O driver de barramento normalmente fornece funções de retorno de chamada EvtDeviceEnableWakeAtBus e EvtDeviceDisableWakeAtBus . Essas funções fazem o que for necessário no adaptador de barramento para habilitar e desabilitar a capacidade de um dispositivo de ativar de um estado de baixa energia.
Para obter informações sobre entradas do Registro que controlam os recursos ociosos de um dispositivo, consulte Controle de usuário do dispositivo ocioso e comportamento de ativação.