Propriété de la stratégie d’alimentation dans UMDF

Avertissement

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

Les exemples UMDF 1 archivés sont disponibles dans la mise à jour des exemples de pilotes Windows 11 version 22H2 - Mai 2022.

Pour plus d’informations, consultez Bien démarrer avec UMDF.

Pour chaque appareil, un (et 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 de l’appareil approprié pour un appareil et envoie des demandes à la pile de pilotes de l’appareil chaque fois que l’état de l’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 veille du système, le framework demande au pilote que le bus de votre appareil réduise l’état d’alimentation de l’appareil à D3. (Votre pilote peut modifier le comportement par défaut afin que l’infrastructure définit 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 bus de restaurer votre appareil à son état de travail (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 alimentation (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

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

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

Par défaut, les pilotes basés sur UMDF ne sont pas des 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 basé sur UMDF soit le propriétaire de la stratégie d’alimentation pour une pile de pilotes, le pilote 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 basé sur 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 REG_DWORD dimensionnée est définie sur un nombre différent de zéro, elle désactive la capacité du pilote WinUSB à être propriétaire de la stratégie d’alimentation de l’appareil. La directive AddReg doit se trouver dans une section INF DDInstall.HW, comme l’illustre l’exemple suivant.

[MyDriver_Install.NT.hw]
AddReg=MyDriver_AddReg

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

Le framework 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 des 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 le framework effectue la requête.

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

  • Si votre pilote permet aux utilisateurs de modifier les paramètres inactifs 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 :