Partager via


État de fonctionnement de l’appareil D0

Dans l’état d’alimentation de l’appareil D0, l’appareil est entièrement activé et opérationnel. Dans cet état, un pilote de périphérique peut interagir avec l’appareil pour effectuer des opérations d’E/S, et l’appareil peut générer des interruptions. Si l’appareil possède des registres matériels mappés en mémoire ou dans l’espace d’adressage d’E/S, le pilote peut accéder à ces registres.

À compter de Windows 8, un pilote de périphérique peut connecter une routine de service d’interruption au niveau passif (ISR) à l’interruption d’un appareil. L’appareil peut générer des interruptions, même s’il n’est pas dans l’état D0. Lorsqu’il est dans un état Dx à faible alimentation, l’appareil peut générer une interruption qui agit comme déclencheur pour ramener l’appareil à D0. L'ISR est prévu pour s'exécuter à IRQL = PASSIVE_LEVEL après que le périphérique entre en D0. Dans les versions antérieures de Windows, y compris Windows 7, un appareil ne doit pas générer d’interruptions lorsqu’il se trouve dans un état d’alimentation d’appareil autre que D0.

Une transition de D0 à un état Dx à faible alimentation peut se produire uniquement lorsque le pilote de périphérique, tout en agissant comme propriétaire de la stratégie d’alimentation pour l’appareil, lance la transition en appelant la routine PoRequestPowerIrp . Lorsque le gestionnaire d’alimentation répond à cet appel en envoyant un IRP d’alimentation (IRP_MN_SET_POWER), le pilote de périphérique, le pilote de bus et le microprogramme de la plateforme (via le pilote ACPI Windows, Acpi.sys) gérez de manière coopérative cet IRP pour modifier l’état d’alimentation de l’appareil.

Le matériel de l’appareil surveille généralement un ensemble d’événements internes qui peuvent générer des interruptions d’exécution ou des signaux de veille, selon la configuration de l’appareil. Le pilote implémente un chemin de code pour répondre aux interruptions, et un autre pour répondre aux événements de veille. Le code du pilote peut être simplifié si le chemin du code d’interruption n’a pas besoin de traiter les événements de veille et que le chemin du code de veille n’a pas besoin de traiter les interruptions. Comme meilleure pratique, le pilote doit configurer l’appareil pour générer des interruptions uniquement lorsque l’appareil est en D0 et pour générer des signaux de veille uniquement lorsque l’appareil est dans un état Dx à faible alimentation. En règle générale, le pilote configure l’appareil pour générer un signal de veille juste avant que l’appareil ne quitte D0 et configure l’appareil pour générer des interruptions juste après que l’appareil entre en D0.

En règle générale, un appareil entre dans l’état D0 lorsque son signal de réinitialisation matérielle est déclaré. En fait, les spécifications des bus tels que PCI et PCI Express nécessitent ce comportement.

Voici les caractéristiques de l’état D0 :

Consommation d’énergie
Niveau le plus élevé de consommation d’énergie continue pour l’appareil.

Contexte de l’appareil
Tout le contexte est conservé.

Comportement du pilote de périphérique
Opération normale.

Heure de restauration
Non applicable.

Fonctionnalité de mise en éveil
Non applicable.