Partager via


Implémentation du sous-système d’alimentation et de charge

Le sous-système d’alimentation de la batterie et de charge dans une plateforme Windows doit implémenter l’interface batterie de méthode de contrôle ACPI. Windows utilise cette interface pour obtenir des informations d’état à partir du sous-système de batterie et pour recevoir des notifications d’événements de batterie.

Modèle de pilote de sous-système d’alimentation et de batterie Windows

Windows dispose d’un modèle de pilote de périphérique de batterie et de sous-système d’alimentation robuste. Les informations de gestion de l’alimentation sont transmises au gestionnaire d’alimentation Windows par le biais d’un pilote de périphérique de batterie. Ces informations sont ensuite agrégées et exposées à l’interface utilisateur Windows par le biais d’IRP de périphérique de batterie et d’un ensemble d’API logicielles de gestion de l’alimentation.

Le modèle de pilote de batterie pour Windows est un modèle de port/miniport ; autrement dit, le modèle de batterie et les interfaces sont définis afin que les nouveaux types de batteries puissent être exposés via un pilote miniport, comme illustré dans le diagramme de blocs suivant. Toutefois, dans la pratique, seule l’interface batterie de méthode de contrôle ACPI est utilisée. Un pilote de miniport de batterie IHM (Interface homme-machine) pour les périphériques ondulateurs USB (UPS) est pris en charge, mais ce pilote n’est pas utilisé pour les batteries système.

Toutes les plateformes Windows sont censées exposer leurs batteries et leur sous-système de charge via l’interface batterie de méthode de contrôle ACPI. L’interface miniport de batterie ne doit pas être utilisée pour les sous-systèmes de charge de batterie spécifiques à la plateforme. La spécification ACPI 5.0 définit des méthodes de contrôle pour permettre à Windows d’obtenir des informations sur la batterie et l’état actuel. En outre, l’interface ACPI fournit des événements pour permettre à la plateforme matérielle d’informer Windows des modifications de la batterie et de la source d’alimentation, telle qu’une transition de secteur à l’alimentation de la batterie.

Obtention de l’état de la batterie

Le gestionnaire d’alimentation Windows demande régulièrement des informations sur l’état de la batterie, y compris la capacité de charge restante et le taux de vidange actuel. Cette demande provient du gestionnaire d’alimentation lui-même, d’un composant d’interface utilisateur de niveau supérieur ou d’une application. Le gestionnaire d’alimentation transforme la requête en un paquet de demande d’E/S (IRP) sur le périphérique de batterie, qui est ensuite transformé en méthode de contrôle appropriée par le pilote de batterie de la méthode de contrôle Windows, Cmbatt.sys. La méthode s’exécute et le résultat est renvoyé dans la pile des pilotes.

Dans le cas des informations d’état, la méthode d’état de la batterie (_BST) est la méthode de contrôle appropriée. La méthode _BST nécessite que le microprogramme ACPI obtienne les informations actuelles du sous-système d’alimentation. Le résultat de la méthode _BST est une mémoire tampon qui contient les informations requises et qui est retournée au pilote de batterie de la méthode de contrôle. Le pilote de batterie de la méthode de contrôle convertit le contenu de la mémoire tampon au format requis par le pilote de batterie et le gestionnaire d’alimentation Windows.

Notification des changements d’état

Le sous-système d’alimentation et de batterie génère plusieurs notifications au système d’exploitation pour les changements d’état, notamment les modifications du niveau de charge, les transitions du secteur à l’alimentation de la batterie et ainsi de suite. Il n’est pas souhaitable d’interroger en permanence ces changements d’état, car cela nécessite une fréquence d’interrogation élevée. Par conséquent, la plateforme matérielle doit implémenter un modèle piloté par les événements pour notifier Windows des modifications apportées au sous-système d’alimentation et de batterie.

Lorsque l’état de la batterie (y compris la capacité restante ou l’état de charge) change, le microprogramme ACPI doit émettre une commande Notify(0x80) sur le périphérique batterie de la méthode de contrôle. En réponse, le pilote batterie de méthode de contrôle dans Windows évalue la méthode _BST et retourne les informations mises à jour au gestionnaire d’alimentation.

Lorsque les données statiques de la batterie changent (y compris la capacité de charge totale de la dernière charge, la capacité de conception et le nombre de cycles), le microprogramme ACPI est requis pour émettre une commande Notify(0x81) sur le périphérique batterie de la méthode de contrôle. En réponse, le pilote batterie de méthode de contrôle dans Windows évalue la méthode _BIX et retourne les informations mises à jour au gestionnaire d’alimentation.

Les événements ACPI Notify sont signalés par le biais de l’interruption de contrôle du système (SCI), dans le cas de plateformes intégrées équipées d’un contrôleur ou par le biais d’E/S à usage général (GPIO), dans le cas des plateformes qui ont un matériel de sous-système de batterie directement connecté au silicium central.