Compartilhar via


Aceitação imediata do tempo limite ocioso

Este tópico discute o valor do Registro ImmediateIdle que um driver do Windows pode usar para aceitar um estado de desligamento imediato, quando a energia não for mais necessária.

Além das configurações de energia padrão discutidas em PortCls Registry Power Settings, Windows 8 introduziu um valor de registro ImmediateIdle que também está localizado na chave do Registro do PowerSettings para o driver associado.

Esse arquivo inf mostra como definir ImmediateIdle.

[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x00, 0x00, 0x00, 0x00

ImmediateIdle tem um tipo de dados de REG_DWORD e seu valor padrão é "0" que equivale a FALSE. No fragmento de sintaxe anterior, o valor hexadecimal de "0" significa que o dispositivo não desligará imediatamente quando a energia não for mais necessária.

Para que o driver aceite um estado de desligamento imediato, quando a energia não for mais necessária, você deverá usar a seguinte sintaxe:

[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x01, 0x00, 0x00, 0x00

No exemplo anterior, o valor hexadecimal de "1" equivale a TRUE e significa que o dispositivo desligará imediatamente quando a energia não for mais necessária.

Quando a estrutura de gerenciamento de energia de runtime invoca um retorno de chamada para o método DevicePowerRequired , indicando que o dispositivo não requer mais energia, PortCls solicita um Device Power IRP para o Estado D indicado pelo valor do registro IdlePowerState . Se nenhum estado for fornecido, o valor padrão de D3 será usado.

Se um driver aceitar o gerenciamento de energia ocioso imediato, ele deverá garantir que o PEP (Plug-in do Power Engine) para o sistema contenha a lógica necessária para evitar desnecessariamente e continuamente ligar o adaptador para cima e para baixo para IRPs recebidos em sucessão imediata. Algumas regras de residência devem ser aplicadas para manter o dispositivo ligado para lotes de solicitações de E/S.

Além disso, a interface introduzida no Windows 7 que permite que os drivers habilitem ou desabilitem programaticamente o gerenciamento de energia ociosa continua sendo respeitada quando o driver não aceita o gerenciamento imediato de energia ociosa. Isso é feito por meio do método IPortClsPower::SetIdlePowerManagement e substituiria as configurações no Registro, exceto pelo caso em que ImmediateIdle está definido como 1 (TRUE).