Propriété Power Policy 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.

Pour chaque appareil, un seul des pilotes de l’appareil doit être le propriétaire de la stratégie d’alimentation de l’appareil. Le propriétaire de la stratégie d’alimentation détermine l’état d’alimentation approprié pour un appareil et envoie les requêtes à la pile des pilotes de l’appareil chaque fois que l’état d’alimentation de l’appareil doit changer.

Les pilotes basés sur l’infrastructure ne contiennent pas de code qui demande des modifications dans l’état d’alimentation d’un appareil, car le framework fournit ce code. Par défaut, chaque fois que le système entre dans un état de mise en veille du système, l’infrastructure demande au pilote du bus de votre appareil de réduire l’état d’alimentation de l’appareil à D3. (Votre pilote peut modifier le comportement par défaut afin que l’infrastructure définisse l’état de veille de votre appareil sur D1 ou D2, si l’appareil fournit des fonctionnalités de mise en éveil.) Lorsque l’alimentation du système revient à son état de fonctionnement (S0), l’infrastructure demande au pilote de bus de restaurer votre appareil à son état de fonctionnement (D0).

Le propriétaire de la stratégie d’alimentation est également responsable de l’activation et de la désactivation des fonctionnalités d’appareil suivantes :

  • La capacité de votre appareil à entrer un état de faible consommation d’alimentation (mise en veille) lorsqu’il est inactif et que le système reste dans son état de fonctionnement (S0)

  • Capacité de votre appareil à se réveiller d’un état de veille lorsqu’il détecte un événement externe

  • La capacité de votre appareil à réveiller l’ensemble du système à partir d’un état de mise en veille du système lorsqu’il détecte un événement externe

Si votre appareil prend en charge ces fonctionnalités d’arrêt inactif et de mise en éveil du système, le propriétaire de la stratégie d’alimentation peut également prendre en charge les interfaces IPowerPolicyCallbackWakeFromS0 et IPowerPolicyCallbackWakeFromSx de l’infrastructure, qui définissent un ensemble de fonctions de rappel des événements de stratégie d’alimentation.

Par défaut, les pilotes basés sur UMDF ne sont pas propriétaires de stratégie d’alimentation. Le pilote de fonction en mode noyau de l’appareil est le propriétaire de la stratégie d’alimentation par défaut. (S’il n’existe aucun pilote de fonction en mode noyau et que le pilote de bus a appelé WdfPdoInitAssignRawDevice, le pilote de bus est le propriétaire de la stratégie d’alimentation). Si vous souhaitez que votre pilote UMDF soit le propriétaire de la stratégie d’alimentation d’une pile de pilotes, celui-ci doit appeler IWDFDeviceInitialize::SetPowerPolicyOwnership, et le propriétaire de la stratégie d’alimentation par défaut en mode noyau doit appeler WdfDeviceInitSetPowerPolicyOwnership pour désactiver la propriété.

En outre, si vous fournissez un pilote UMDF pour un périphérique USB et que vous souhaitez que votre pilote soit le propriétaire de la stratégie d’alimentation, le fichier INF du pilote doit contenir une directive AddReg INF qui définit la valeur WinUsbPowerPolicyOwnershipDisabled dans le Registre. Si cette valeur de taille REG_DWORD est définie sur un nombre différent de zéro, elle désactive la capacité du pilote WinUSB à être le propriétaire de la stratégie d’alimentation de l’appareil. La directive AddReg doit se trouver dans une section INF DDInstall.HW, comme le montre l’exemple suivant.

[MyDriver_Install.NT.hw]
AddReg=MyDriver_AddReg

[MyDriver_AddReg]
HKR,,"WinUsbPowerPolicyOwnershipDisabled",0x00010001,1

L’infrastructure effectue les opérations suivantes pour le propriétaire de la stratégie d’alimentation :

  • Il gère toutes les communications de stratégie d’alimentation entre votre pilote et le reste de la pile de pilotes. Par exemple, votre pilote n’a pas besoin de demander au pilote de bus de modifier l’état d’alimentation de l’appareil, car l’infrastructure effectue la demande.

  • Si votre pilote enregistre des fonctions de rappel d’événements de stratégie d’alimentation, l’infrastructure les appelle lorsqu’il est temps d’activer ou de désactiver la capacité de l’appareil à se réveiller d’un état de faible consommation.

  • 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.

Pour plus d’informations sur les responsabilités du propriétaire de la stratégie d’alimentation, consultez les rubriques suivantes :