IAdapterPowerManagement ::P owerChangeState, méthode (portcls.h)
La méthode PowerChangeState
demande que l’appareil passe à un nouvel état d’alimentation.
Syntaxe
void PowerChangeState(
[in] POWER_STATE NewState
);
Paramètres
[in] NewState
Spécifie le nouvel état d’alimentation demandé pour l’appareil. Ce paramètre est une union de type POWER_STATE. Le nouvel état d’alimentation (NewState.DeviceState) peut être l’une des valeurs d’énumération DEVICE_POWER_STATE indiquées dans le tableau suivant.
État de l’alimentation | Signification |
---|---|
PowerDeviceD0 | État de puissance totale (D0). Ce code peut être une fonction de l’état actuel de l’alimentation. Enregistrez le nouvel état. Cette valeur locale est utilisée pour déterminer quand mettre en cache les accès aux propriétés et quand autoriser le pilote à accéder au matériel. |
PowerDeviceD1 | État de veille ayant la latence la plus faible en ce qui concerne le temps de latence nécessaire pour revenir à D0 |
PowerDeviceD2 | État de veille de latence moyenne. Dans cet état, le pilote de périphérique ne peut pas supposer qu’il peut toucher le matériel, de sorte que tous les accès doivent être mis en cache et le matériel restauré lors de l’entrée de D0. |
PowerDeviceD3 | État de veille prolongée complète et état de veille prolongée le plus long. Le pilote ne peut pas accéder au matériel dans cet état et doit mettre en cache tous les accès matériels et restaurer le matériel lors du retour à D0 ou D1 |
Valeur de retour
Aucun
Remarques
PortCls appelle la méthode PowerChangeState
en réponse à un IRP d’alimentation IRP_MN_SET_POWER. Cet appel ne doit pas échouer. Les listes de contrôle de port et le système utilisent l’appel PowerChangeState
pour placer l’appareil dans l’état d’alimentation souhaité. Lorsque le système tente de suspendre ou de reprendre un flux audio actif, le pilote doit pouvoir enregistrer ou restaurer son contexte d’appareil de manière appropriée.
Pour aider le pilote, PortCls interrompt tous les flux audio actifs avant d’appeler cette méthode pour placer l’appareil dans un état de veille. Après avoir appelé cette méthode, PortCls désactive les flux audio actifs pour réveiller l’appareil. Les miniports peuvent opter pour une notification supplémentaire en utilisant l’interface IPowerNotify.
Le pilote miniport doit effectuer la modification demandée de l’état d’alimentation de l’appareil avant de retourner à partir de l’appel PowerChangeState
. Si le pilote miniport doit enregistrer ou restaurer un état d’appareil avant une modification de l’état de l’alimentation, le pilote miniport doit prendre en charge l’interface IPowerNotify, ce qui lui permet de recevoir un avertissement avancé de toute modification de ce type. Avant de revenir d’un appel de PowerChangeState
réussi, le pilote miniport doit mettre en cache le nouvel état d’alimentation.
Bien que le pilote miniport soit dans l’un des états de veille (tout état autre que PowerDeviceD0), il doit éviter d’écrire dans le matériel. Le pilote miniport doit mettre en cache tous les accès matériels qui doivent être différés jusqu’à ce que l’appareil se réactive. Si l’état de l’alimentation passe de l’un des états de veille à PowerDeviceD0, le pilote miniport doit effectuer des accès matériels différés une fois qu’il a alimenté l’appareil. Si l’état de l’alimentation passe de PowerDeviceD0 à un état de veille, le pilote miniport peut effectuer tous les accès matériels nécessaires pendant l’appel PowerChangeState
avant qu’il n’alimente l’appareil.
En cas de panne, un pilote miniport n’est jamais invité à créer un objet de pilote miniport ou un objet de flux. PortCls place toujours l’appareil dans l’état PowerDeviceD0 avant d’appeler la méthode NewStream du pilote miniport.
Le code de cette méthode doit résider dans la mémoire paginée.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | portcls.h (include Portcls.h) |