Partager via


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)

Voir aussi

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER