Partager via


Fonctionnalités D3cold d’un appareil

Avant que le pilote qui est le propriétaire de la stratégie d’alimentation (PPO) d’un appareil autorise l’appareil à entrer dans D3cold (lorsque l’ordinateur doit rester dans S0), le pilote doit vérifier que le périphérique sera réactif et continuera à fonctionner correctement une fois que l’appareil est entré dans D3cold.

Pour un appareil Plug-and-Play (PnP), le système d’exploitation obtient généralement des informations sur les fonctionnalités D3cold de l’appareil à partir du pilote de bus parent.

Par exemple, si un appareil est attaché à un bus PCI ou PCI Express, l’espace de configuration PCI de l’appareil contient un bloc de registre de gestion de l’alimentation qui indique les fonctionnalités de l’appareil. Les indicateurs de capacité dans ce bloc spécifient les états d’alimentation de l’appareil à partir desquels l’appareil peut signaler un événement de gestion de l’alimentation, ou PME (terme PCI pour un événement de veille). Ces états peuvent inclure D3hot et D3cold. Pour plus d’informations sur la gestion de l’alimentation PCI, consultez spécification de l’interface de gestion de l’alimentation PCI Bus.

Si un appareil doit être en mesure de signaler un événement de sortie de veille à partir d’un état Dx à faible puissance qu’il entre, il ne doit pas entrer dans D3cold, sauf si l’appareil, le contrôleur de bus parent et la plateforme matérielle prennent en charge la signalisation d’un événement de sortie de veille à partir de D3cold.

Le pilote KMDF d’un appareil appelle la méthode WdfDeviceAssignS0IdleSettings pour permettre à l’appareil d’être inactif dans l’état d’alimentation de l’appareil le moins puissant à partir duquel l’appareil peut signaler un événement de sortie de veille. À compter de KMDF version 1.11, WdfDeviceAssignS0IdleSettings inclut D3cold dans la plage d’états Dx à faible consommation possibles. Cette méthode permet à un appareil de rester inactif dans D3cold uniquement si le périphérique, le pilote de bus parent et le microprogramme système ACPI prennent en charge la signalisation des événements de sortie de veille à partir de D3cold.

Le pilote WDM d’un appareil doit décider de l’état Dx basse consommation vers lequel déplacer l’appareil lorsque celui-ci est inactif. (En revanche, WdfDeviceAssignS0IdleSettings sélectionne automatiquement cet état Dx afin que le pilote n’ait pas à le faire.) Si l’appareil doit être en mesure de signaler un événement de sortie de veille à partir d’un état Dx de faible puissance qu’il entre, le pilote peut appeler la routine GetIdleWakeInfo pour déterminer l’état d’alimentation de l’appareil le plus faible à partir duquel l’appareil peut signaler un événement de sortie de veille. Pour obtenir ces informations, GetIdleWakeInfo interroge le pilote de bus sous-jacent et le microprogramme système ACPI. En fonction des informations de GetIdleWakeInfo, le pilote peut appeler la routine SetD3ColdSupport pour activer ou désactiver les transitions de l’appareil vers D3cold.

Un appareil peut ne pas nécessiter la possibilité de signaler un événement de sortie de veille à partir de D3cold. À la place, l’appareil peut être amené à effectuer la transition de D3cold à D0 uniquement en réponse à des actions initiées par le logiciel. Par exemple, le pilote peut avoir besoin de sortir l’appareil si le pilote reçoit une demande d’E/S pour l’appareil. À quelques exceptions près, le pilote d’un tel appareil peut permettre à l’appareil d’entrer dans D3cold. Une exception possible est un appareil qui nécessite beaucoup de temps pour effectuer une transition de D3cold à D0. Par exemple, un périphérique d’affichage peut contenir une grande quantité de mémoire qui doit être enregistrée avant que l’appareil entre dans D3cold et restauré après qu’il quitte D3cold.

Pour plus d’informations sur la prise en charge d’ACPI pour D3cold, consultez Microprogramme requis pour D3cold.