Controle do usuário do comportamento de ativação e ociosidade do dispositivo

Se um dispositivo tiver recursos ociosos de ligar/desligar ou ativar, você poderá decidir se os usuários devem ter permissão para habilitar ou desabilitar esses recursos.

Seu driver pode usar membros da estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS para especificar se os usuários com acesso ao Registro podem habilitar ou desabilitar a funcionalidade de desligamento ocioso de um dispositivo.

O driver pode usar membros da estrutura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS para especificar se os usuários com acesso ao Registro podem habilitar ou desabilitar a funcionalidade de ativação de um dispositivo.

Ambas as estruturas permitem que o driver habilite a funcionalidade, desabilite a funcionalidade ou dê aos usuários o controle da funcionalidade. Para dar aos usuários o controle, na estrutura de configurações apropriada, o driver define o membro UserControlOfIdleSettings ou UserControlOfWakeSettings como IdleAllowUserControl ou WakeAllowUserControl, respectivamente, e o membro Enabled para WdfTrue ou WdfUseDefault, respectivamente.

Se o driver permitir que os usuários modifiquem as configurações ociosas e de ativação, a estrutura fornece uma interface do usuário, na forma de uma página de folha de propriedades que Gerenciador de Dispositivos é exibida para que os usuários possam habilitar ou desabilitar os recursos ociosos e de ativação. (A estrutura modifica os valores do registro IdleInWorkingState e WakeFromSleepState . Os drivers e seus arquivos de instalação não devem ler ou modificar esses valores.)

Se um usuário modificar as configurações de um dispositivo, a estrutura atualizará o estado de energia do dispositivo para corresponder às novas configurações, se necessário. Por exemplo, se o usuário desabilitar a funcionalidade de desligamento ocioso de um dispositivo enquanto o dispositivo já estiver em um estado de baixa energia porque estava ocioso, a estrutura retornará o dispositivo para seu estado de trabalho.

Se o driver permitir que os usuários modifiquem as configurações ociosas e de ativação, a estrutura habilitará essas configurações por padrão. Alguns gravadores de driver podem querer desabilitar inicialmente as configurações antes de permitir que os usuários as modifiquem.

Portanto, para a versão 1.9 e versões posteriores do KMDF, a estrutura fornece dois valores de Registro definíveis para driver, chamados WdfDefaultIdleInWorkingState e WdfDefaultWakeFromSleepState, que são armazenados na subchave Device Parameters\WDF do dispositivo, sob a chave de hardware do dispositivo. Os valores são REG_DWORD tipados, com "0" indicando que a funcionalidade está desabilitada e "1" indicando que a funcionalidade está habilitada.

O arquivo INF do driver pode usar uma diretiva InF AddReg para criar e definir os valores do registro WdfDefaultIdleInWorkingState e WdfDefaultWakeFromSleepState . Por exemplo, se o driver habilitar a capacidade de desligamento ocioso de um dispositivo, mas se a funcionalidade precisar ser desabilitada quando o dispositivo estiver instalado, o arquivo INF do driver poderá definir WdfDefaultIdleInWorkingState como "0".

A estrutura examina os valores do registro WdfDefaultIdleInWorkingState e WdfDefaultWakeFromSleepState somente se o driver tiver definido o membro UserControlOfIdleSettings ou UserControlOfWakeSettings como IdleAllowUserControl ou WakeAllowUserControl, respectivamente, e o membro Enabled como WdfTrue ou WdfUseDefault, na estrutura de configurações apropriada.