Contrôle utilisateur du comportement d’inactivité et de veille des appareils

Si un appareil dispose de fonctionnalités de mise hors tension ou de mise en veille inactives, vous pouvez décider si les utilisateurs doivent être autorisés à activer ou désactiver ces fonctionnalités.

Votre pilote peut utiliser les membres de la structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS pour spécifier si les utilisateurs disposant d’un accès au Registre peuvent activer ou désactiver la fonctionnalité d’arrêt inactif d’un appareil.

Votre pilote peut utiliser les membres de la structure WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS pour spécifier si les utilisateurs disposant d’un accès au Registre peuvent activer ou désactiver la fonctionnalité de mise en éveil d’un appareil.

Ces deux structures permettent au pilote d’activer la fonctionnalité, de la désactiver ou de donner aux utilisateurs le contrôle de la fonctionnalité. Pour donner aux utilisateurs le contrôle, dans la structure de paramètres appropriée, le pilote définit le membre UserControlOfIdleSettings ou UserControlOfWakeSettings sur IdleAllowUserControl ou WakeAllowUserControl, respectivement, et le membre Enabled sur WdfTrue ou WdfUseDefault,.

Si votre pilote permet aux utilisateurs de modifier les paramètres d’inactivité et de veille, l’infrastructure fournit une interface utilisateur, sous la forme d’une page de feuille de propriétés qui Gestionnaire de périphériques s’affiche afin que les utilisateurs puissent activer ou désactiver les fonctionnalités d’inactivité et de veille. (L’infrastructure modifie les valeurs de Registre IdleInWorkingState et WakeFromSleepState . Les pilotes et leurs fichiers d’installation ne doivent pas lire ou modifier ces valeurs.)

Si un utilisateur modifie les paramètres d’un appareil, l’infrastructure met à jour l’état d’alimentation de l’appareil pour qu’il corresponde aux nouveaux paramètres, si nécessaire. Par exemple, si l’utilisateur désactive la fonctionnalité d’arrêt inactif d’un appareil alors que l’appareil est déjà à faible consommation d’énergie parce qu’il était inactif, l’infrastructure retourne l’appareil à son état de fonctionnement.

Si votre pilote permet aux utilisateurs de modifier les paramètres d’inactivité et de veille, l’infrastructure active ces paramètres par défaut. Certains enregistreurs de pilotes peuvent souhaiter désactiver initialement les paramètres avant d’autoriser les utilisateurs à les modifier.

Par conséquent, pour les versions 1.9 et ultérieures de KMDF, l’infrastructure fournit deux valeurs de Registre définissables par un pilote, nommées WdfDefaultIdleInWorkingState et WdfDefaultWakeFromSleepState, qui sont stockées dans la sous-clé Device Parameters\WDF de l’appareil, sous la clé matérielle de l’appareil. Les valeurs sont REG_DWORD type, avec « 0 » indiquant que la fonctionnalité est désactivée et « 1 » indiquant que la fonctionnalité est activée.

Le fichier INF de votre pilote peut utiliser une directive AddReg INF pour créer et définir les valeurs de Registre WdfDefaultIdleInWorkingState et WdfDefaultWakeFromSleepState . Par exemple, si votre pilote active la fonctionnalité d’arrêt inactif d’un appareil, mais si la fonctionnalité doit être désactivée lorsque l’appareil est installé, le fichier INF du pilote peut définir WdfDefaultIdleInWorkingState sur « 0 ».

L’infrastructure examine les valeurs de Registre WdfDefaultIdleInWorkingState et WdfDefaultWakeFromSleepState uniquement si le pilote a défini le membre UserControlOfIdleSettings ou UserControlOfWakeSettings sur IdleAllowUserControl ou WakeAllowUserControl, respectivement, et le membre Enabled sur WdfTrue ou WdfUseDefault, dans la structure de paramètres appropriée.