SET_D3COLD_SUPPORT fonction de rappel (wdm.h)

La routine de rappel SetD3ColdSupport active ou désactive les transitions vers l’état d’alimentation de l’appareil D3cold.

Syntaxe

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

Paramètres

[in, optional] Context

Pointeur vers des informations de contexte spécifiques à l’interface. L’appelant définit ce paramètre sur la valeur du membre Context de la structure D3COLD_SUPPORT_INTERFACE pour l’interface.

[in] D3ColdSupport

Indique s’il faut autoriser les transitions de D3hot à D3cold. Définissez sur TRUE pour activer ces transitions. Sinon, définissez sur FALSE. Pour plus d’informations, consultez Remarques.

Valeur de retour

None

Remarques

Le pilote qui est le propriétaire de la stratégie d’alimentation (PPO) d’un appareil peut appeler cette routine pour activer ou désactiver les transitions vers le sous-état D3cold qui peuvent se produire lorsque l’ordinateur est à l’état d’alimentation du système S0 (fonctionnement) et ne se prépare pas à quitter S0.

Si un appareil doit être en mesure de signaler un événement de veille à partir d’un état Dx à faible consommation qu’il entre, le pilote de cet appareil ne doit pas activer les transitions vers le sous-état D3cold, sauf si l’appareil peut signaler un événement de veille à partir de ce sous-état. Sinon, après avoir entré D3cold, l’appareil n’est pas disponible jusqu’à ce que l’ordinateur redémarre ou se réveille d’un état de veille.

Le pilote de l’appareil peut appeler la routine GetIdleWakeInfo pour déterminer si l’appareil peut signaler un événement de veille à partir de D3cold.

Si nécessaire, le pilote d’un appareil peut effectuer une série d’appels SetD3ColdSupport pour activer et désactiver alternativement les transitions D3cold en réponse à des conditions qui changent dynamiquement.

Par exemple, un périphérique graphique peut avoir un contexte matériel volumineux à restaurer après une transition de D3cold à D0. Le temps nécessaire à la restauration de ce contexte peut être acceptable ou non en fonction de l’ensemble des tâches que l’utilisateur effectue actuellement. En outre, le temps de restauration peut varier en fonction de cette combinaison de tâches. Le pilote peut avoir besoin d’activer et de désactiver dynamiquement les transitions vers D3cold à mesure que la combinaison de tâches change.

Un appareil peut entrer le sous-état D3cold uniquement à partir du sous-état D3hot. Si le pilote appelle SetD3ColdSupport pour activer les transitions de D3hot à D3cold, l’appareil peut ou non entrer D3cold après avoir entré D3hot. En réponse à un événement de veille, un appareil peut entrer D0 directement à partir de D3hot sans jamais passer par D3cold.

Lorsqu’un appareil passe de D3hot à D3cold, il le fait probablement parce que la source d’alimentation qu’il partage avec un certain nombre d’autres appareils a été désactivée. Une fois que ces appareils sont entrés dans D3cold, le pilote de l’un des appareils peut demander une transition vers D0. En réponse à cette demande, le pilote de bus parent ou le pilote de filtre ACPI active la source d’alimentation, et tous les appareils qui partagent la source d’alimentation entrent leur état de mise sous tension par défaut.

Le seul pilote de périphérique qui s’attend à ce changement d’état d’alimentation est le pilote qui a demandé la modification. Les pilotes des autres appareils doivent recevoir une notification de cette modification afin qu’ils puissent initialiser correctement leurs appareils pour fonctionner dans D0. Seul un pilote pouvant recevoir cette notification doit permettre à son appareil d’entrer D3cold. Sinon, le pilote ne sait pas quand l’appareil entre dans D0.

À compter de Windows 8, un pilote WDM peut inscrire son appareil auprès de l’infrastructure d’alimentation (PoFx) et être averti par la routine DevicePowerRequiredCallback lorsque l’appareil entre dans D0. De même, un pilote KMDF peut inscrire son appareil auprès de PoFx et être averti par le rappel d’événements EvtDeviceD0Entry .

Un pilote qui n’inscrit pas son appareil auprès de PoFx peut toujours être averti d’une transition vers D0 si l’appareil est armé pour le réveil. Lorsque les pilotes de bus allument l’appareil, ils effectuent la demande de IRP_MN_WAIT_WAKE du pilote. En réponse, le pilote initialise son appareil pour qu’il fonctionne en D0.

Une fois qu’une source d’alimentation partagée par plusieurs appareils s’est activée, l’appareil dont le pilote a demandé la transition vers D0 peut être le seul de ces appareils qui a du travail à faire. Les autres appareils sont susceptibles d’être inactifs, auquel cas leurs pilotes, après un certain temps, déplaceront ces appareils vers D3hot.

Si le pilote appelle SetD3ColdSupport pour désactiver les transitions vers D3cold, D0 est le seul état d’alimentation de l’appareil que l’appareil peut entrer à partir de D3hot.

Si le pilote appelle SetD3ColdSupport pour activer les transitions vers D3cold, ces transitions peuvent être désactivées pour d’autres raisons. Le pilote peut appeler la routine GetD3ColdCapability pour déterminer si l’appareil est capable d’entrer le sous-état D3cold. Toutefois, un pilote n’a peut-être pas besoin de ces informations. Si un appareil n’est pas capable d’entrer D3cold, les appels à SetD3ColdSupport n’ont aucun effet, mais sont inoffensifs.

La routine SetD3ColdSupport affecte uniquement les transitions D3hot-à-D3cold qui peuvent se produire lorsque l’ordinateur est à l’état S0 (et ne se prépare pas à quitter). Cette routine n’a aucun effet sur le cas où l’ordinateur se prépare à quitter S0 et à entrer dans un état de système à faible consommation d’énergie. Un appareil dans le sous-état D3hot peut toujours entrer dans le sous-état D3cold juste avant que l’ordinateur n’entre dans un état de faible consommation du système.

Par défaut, avant le premier appel à la routine SetD3ColdSupport , les transitions D3hot-à-D3cold sont désactivées. Pour modifier cette valeur par défaut afin que les transitions D3hot-vers-D3cold soient activées avant le premier appel SetD3ColdSupport , le package de pilotes de l’appareil peut inclure les deux lignes suivantes dans la section DDInstall.HW du fichier INF qui installe le pilote :

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 est la première version de Windows à prendre en charge les appareils qui peuvent entrer et quitter le sous-état D3cold tant que l’ordinateur reste à l’état S0. Pour plus d’informations, consultez États Low-Power de l’appareil.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (inclure Wdm.h)
IRQL PASSIVE_LEVEL

Voir aussi

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE