Controle de usuário do comportamento ocioso e de ativação do dispositivo no UMDF

Aviso

O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2.

Os exemplos umdf 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.

Para obter mais informações, consulte Introdução com UMDF.

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 baseado em UMDF pode usar o método IWDFDevice2::AssignS0IdleSettings para especificar se os usuários com acesso ao Registro podem habilitar ou desabilitar a funcionalidade de desligamento ocioso de um dispositivo.

Seu driver pode usar o método IWDFDevice2::AssignSxWakeSettings para especificar se os usuários com acesso ao Registro podem habilitar ou desabilitar a funcionalidade de ativação de um dispositivo.

Esses dois métodos permitem que o driver habilite a funcionalidade, desabilite a funcionalidade ou dê aos usuários o controle da funcionalidade:

  • Quando um driver chama o método AssignS0IdleSettings , ele pode dar aos usuários o controle dos recursos ociosos de um dispositivo definindo o parâmetro UserControlOfIdleSettings como IdleAllowUserControl e definindo o parâmetro Enabled como WdfTrue ou WdfUseDefault.

  • Quando um driver chama o método AssignSxWakeSettings , ele pode dar aos usuários o controle dos recursos de ativação de um dispositivo definindo o parâmetro UserControlOfWakeSettings como WakeAllowUserControl e definindo o parâmetro Enabled como WdfTrue ou WdfUseDefault.

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, as versões 1.9 e posteriores da estrutura fornecem 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 examinará o valor do registro WdfDefaultIdleInWorkingState somente se o driver definir o parâmetro UserControlOfIdleSettings como IdleAllowUserControl e o parâmetro Enabled como WdfTrue ou WdfUseDefault quando o driver chamar o método IWDFDevice2::AssignS0IdleSettings .

A estrutura examinará os valores do registro WdfDefaultWakeFromSleepState somente se o driver definir o parâmetro UserControlOfWakeSettings como IWakeAllowUserControl e o parâmetro Enabled como WdfTrue ou WdfUseDefault quando o driver chamar o método IWDFDevice2::AssignSxWakeSettings .