Gerenciamento de energia WinUSB
O WinUSB usa as máquinas de estado KMDF para gerenciamento de energia. As políticas de energia são gerenciadas por meio de chamadas para WinUsb_SetPowerPolicy.
Para modificar o comportamento de energia do WinUSB, as configurações padrão do Registro podem ser modificadas no INF do dispositivo. Esses valores devem ser gravados no local específico do dispositivo no registro adicionando os valores no HW. AddReg do INF.
Os valores do Registro descritos na lista a seguir podem ser especificados no INF do dispositivo para modificar o comportamento de energia.
Ativação do sistema
Esse recurso é controlado pela configuração do Registro DWORD SystemWakeEnabled . Esse valor indica se o dispositivo deve ter permissão para ativar o sistema de um estado de baixa energia.
HKR,,SystemWakeEnabled,0x00010001,1
- Um valor zero ou a ausência desse valor indica que o dispositivo não tem permissão para ativar o sistema.
- Para permitir que um dispositivo ative o sistema, defina SystemWakeEnabled como um valor diferente de zero. Uma caixa de seleção na página Propriedades do dispositivo é ativada automaticamente para que o usuário possa substituir a configuração.
Observação
Alterar a configuração SystemWakeEnabled não tem efeito na suspensão seletiva, esse valor do Registro pertence apenas à suspensão do sistema.
Suspensão seletiva
A suspensão seletiva pode ser desabilitada por qualquer uma das várias configurações do sistema ou do WinUSB. Uma única configuração não pode forçar o WinUSB a habilitar a suspensão seletiva.
As seguintes configurações de política de energia especificadas no parâmetro PolicyType do WinUsb_SetPowerPolicy afetam o comportamento da suspensão seletiva:
- AUTO_SUSPEND Quando definido como zero, ele não define o dispositivo para o modo de suspensão seletiva.
- SUSPEND_DELAY Define o tempo entre o momento em que o dispositivo fica ocioso e o momento em que o WinUSB solicita que o dispositivo entre em suspensão seletiva.
A tabela a seguir mostra como as chaves do Registro afetam o recurso de suspensão seletiva.
Chave do Registro | Descrição |
---|---|
DeviceIdleEnabled | Esse é um valor DWORD. Esse valor do Registro indica se o dispositivo pode ser desligado quando ocioso (Suspensão Seletiva).
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | Quando definido como um valor diferente de zero, ele suspende o dispositivo mesmo que ele não dê suporte a RemoteWake. |
UserSetDeviceIdleEnabled | Esse valor é um valor DWORD. Esse valor do Registro indica se uma caixa de seleção deve ser habilitada na página Propriedades do dispositivo que permite que um usuário substitua os padrões ociosos. Quando UserSetDeviceIdleEnabled é definido como um valor diferente de zero, a caixa de seleção é habilitada e o usuário pode desabilitar o desligamento do dispositivo quando ocioso. Um valor zero ou a ausência desse valor indica que a caixa de seleção não está habilitada.
O UserSetDeviceIdleEnabled será ignorado se DeviceIdleEnabled não estiver definido. HKR,,UserSetDeviceIdleEnabled,0x00010001,1 |
DefaultIdleState | Esse é um valor DWORD. Esse valor do Registro define o valor padrão da configuração de política de energia AUTO_SUSPEND. Essa chave do Registro é usada para habilitar ou desabilitar a suspensão seletiva quando um identificador não está aberto para o dispositivo.
Esse valor será ignorado se DeviceIdleEnabled não estiver definido. HKR,,DefaultIdleState,0x00010001,1 |
DefaultIdleTimeout | Esse é um valor DWORD. Esse valor do Registro define o estado padrão da configuração da política de energia SUSPEND_DELAY. O valor indica a quantidade de tempo em milissegundos para aguardar antes de determinar que um dispositivo está ocioso. HKR,,DefaultIdleTimeout,0x00010001,100 |
Detectando ocioso
Todas as gravações e transferências de controle forçam o dispositivo para o estado de energia D0 e redefinem o temporizador ocioso. As filas de ponto de extremidade IN não são gerenciadas por energia. As solicitações de leitura ativam o dispositivo quando são enviadas. No entanto, um dispositivo pode ficar ocioso enquanto uma solicitação de leitura aguarda.
Tópicos relacionados
- Arquitetura e módulos do WinUSB
- Como escolher um modelo de driver desenvolvendo um driver cliente USB
- Instalação do WinUSB (Winusb.sys)
- Como acessar um dispositivo USB usando funções do WinUSB
- Funções do WinUSB para modificação de diretivas de pipe
- Funções do WinUSB
- Introdução ao WinUSB para desenvolvedores
- WinUsb_GetPowerPolicy
- WinUsb_SetPowerPolicy