WdfDeviceGetSystemPowerAction, fonction (wdfdevice.h)
[S’applique à KMDF et UMDF]
La méthode WdfDeviceGetSystemPowerAction retourne l’action d’alimentation système , le cas échéant, qui se produit actuellement pour l’ordinateur.
Syntaxe
POWER_ACTION WdfDeviceGetSystemPowerAction(
[in] WDFDEVICE Device
);
Paramètres
[in] Device
Handle vers un objet d’appareil framework.
Valeur de retour
WdfDeviceGetSystemPowerAction retourne une valeur d’énumérateur POWER_ACTION typée. La valeur indique l’action d’alimentation système qui se produit actuellement pour l’ordinateur. Pour plus d’informations, consultez la section Remarques suivante. L’énumération POWER_ACTION est définie dans wdm.h.
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Remarques
À compter de WDF version 1.31/2.31 (appelée « v31 »), WdfDeviceGetSystemPowerAction a été mis à jour pour signaler plus précisément l’action d’alimentation du système lorsque l’appareil est le propriétaire de la stratégie d’alimentation. Les pilotes doivent être recompilés avec v31 ou version ultérieure pour obtenir le nouveau comportement suivant :
Si l’appareil entre ou quitte D0 en raison de S0 Inactif (voir WdfDeviceAssignS0IdleSettings) alors qu’une transition d’alimentation système non liée est en cours, WdfDeviceGetSystemPowerAction peut retourner PowerActionSleep. Cette opération est corrigée dans la version 31 et retourne maintenant PowerActionNone.
Lorsque le système se réveille du veille hybride (veille prolongée avec un fichier de mise en veille prolongée), avant la version 31, WdfDeviceGetSystemPowerAction toujours retourné PowerActionHibernate. Cette opération est corrigée dans la version 31 et retourne maintenant :
- PowerActionSleep s’il se réveille sans perte d’alimentation, ce qui signifie que le système est resté dans S3
- PowerActionHibernate s’il se réveille après une perte d’alimentation, ce qui signifie que le système a repris à partir du fichier de mise en veille prolongée
La méthode WdfDeviceGetSystemPowerAction permet à un pilote de déterminer si la transition de l’alimentation d’un appareil se produit parce que l’appareil est inactif (ou se réveille), ou parce que l’ordinateur entier entre (ou quitte) un état de faible alimentation.
Le pilote doit appeler WdfDeviceGetSystemPowerAction uniquement à partir des fonctions de rappel d’événements que l’infrastructure appelle lorsque l’appareil est entrer un état à faible alimentation ou revenir à son état de travail.
La valeur qui WdfDeviceGetSystemPowerAction retourne dépend des situations suivantes :
- Si l’ordinateur entre un état à faible alimentation lorsque le pilote appelle WdfDeviceGetSystemPowerAction, la méthode retourne la raison pour laquelle l’ordinateur entre dans l’état à faible alimentation. Par exemple, la méthode retourne PowerActionSleep si l’ordinateur entre son état S1, S2 ou S3 à faible alimentation.
- Si l’ordinateur revient à son état de fonctionnement (S0) à partir d’un état à faible alimentation lorsque le pilote appelle WdfDeviceGetSystemPowerAction, la méthode retourne la raison pour laquelle l’ordinateur a entré l’état de faible alimentation. Par exemple, la méthode retourne PowerActionSleep si l’ordinateur quitte son état S1, S2 ou S3 à faible alimentation.
- Si l’ordinateur est en cours d’alimentation (après avoir été désactivé) lorsque le pilote appelle WdfDeviceGetSystemPowerAction, la méthode retourne PowerActionNone.
- Si l’appareil entre un état d’inactivité à faible alimentation ou retourne à son état de fonctionnement (D0) lorsque le pilote appelle WdfDeviceGetSystemPowerAction, tandis que le reste du système reste à son état de fonctionnement (S0), la méthode retourne PowerActionNone.
- Si l’ordinateur et l’appareil sont tous les deux dans leurs états de travail lorsque le pilote appelle WdfDeviceGetSystemPowerAction, la méthode retourne PowerActionNone.
Exemples
L’exemple de code suivant obtient l’activité de transition de l’alimentation qui se produit actuellement pour l’ordinateur.
POWER_ACTION SysPowerAction;
SysPowerAction = WdfDeviceGetSystemPowerAction(device);
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
version minimale de KMDF | 1.9 |
version minimale de UMDF | 2.0 |
d’en-tête | wdfdevice.h (include Wdf.h) |
bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |