Partager via


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

Avertissement

UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2.

Les exemples UMDF 1 archivés se trouvent dans la Windows 11, version 22H2 - Mise à jour des exemples de pilotes de mai 2022.

Pour plus d’informations, consultez Prise en main avec UMDF.

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 UMDF peut utiliser la méthode IWDFDevice2::AssignS0IdleSettings 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 la méthode IWDFDevice2::AssignSxWakeSettings 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 méthodes permettent au pilote d’activer la fonctionnalité, de la désactiver ou de donner aux utilisateurs le contrôle de la fonctionnalité :

  • Lorsqu’un pilote appelle la méthode AssignS0IdleSettings , il peut donner aux utilisateurs le contrôle des fonctionnalités d’inactivité d’un appareil en définissant le paramètre UserControlOfIdleSettings sur IdleAllowUserControl et en définissant le paramètre Enabled sur WdfTrue ou WdfUseDefault.

  • Lorsqu’un pilote appelle la méthode AssignSxWakeSettings , il peut donner aux utilisateurs le contrôle des fonctionnalités de veille d’un appareil en définissant le paramètre UserControlOfWakeSettings sur WakeAllowUserControl et en définissant le paramètre 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, les versions 1.9 et ultérieures de l’infrastructure fournissent 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 la valeur de Registre WdfDefaultIdleInWorkingState uniquement si le pilote définit le paramètre UserControlOfIdleSettings sur IdleAllowUserControl et le paramètre Enabled sur WdfTrue ou WdfUseDefault lorsque le pilote appelle la méthode IWDFDevice2::AssignS0IdleSettings .

L’infrastructure examine les valeurs de Registre WdfDefaultWakeFromSleepState uniquement si le pilote définit le paramètre UserControlOfWakeSettings sur IWakeAllowUserControl et le paramètre Enabled sur WdfTrue ou WdfUseDefault lorsque le pilote appelle la méthode IWDFDevice2::AssignSxWakeSettings .