Informations sur la batterie
Les batteries peuvent fournir de l’alimentation pour les ordinateurs portables et les ordinateurs qui s’exécutent sur une alimentation électrique ininterruptible (UPS). Sur ces ordinateurs, le système d’exploitation fournit des informations sur l’état de la batterie afin que les applications puissent fournir des fonctions utiles à l’utilisateur. (Certains anciens systèmes de batterie non standard et UPS ne sont pas pris en charge.)
Notez que cette vue d’ensemble suppose que vous êtes familiarisé avec gestion des appareils.
Pour obtenir des informations sur l’état de la batterie, utilisez la fonction GetSystemPowerStatus, qui retourne des informations générales sur toutes les sources d’alimentation du système. Vous devez utiliser GetSystemPowerStatus dans la mesure du possible.
Toutefois, dans certains cas, des informations détaillées sur chaque batterie individuelle sont nécessaires. À cet effet, chaque appareil de batterie expose une interface IOCTL. Les opérations IOCTL suivantes sont effectuées à l’aide de la fonction DeviceIoControl :
IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION
Pour utiliser cette interface, une application doit suivre plusieurs étapes. Tout d’abord, il doit utiliser des routines de configuration pour énumérer tous les appareils qui ont une interface de classe de batterie. Notez que ces appareils représentent les ports de batterie, et non les batteries réelles présentes dans le système. L’application doit ensuite ouvrir un handle sur chaque appareil afin qu’elle puisse utiliser la fonction DeviceIoControl pour envoyer des requêtes à l’appareil, puis acquérir des étiquettes pour toutes les batteries insérées. Une fois ces étapes effectuées, l’application peut envoyer des requêtes à chaque appareil de batterie.
Étiquettes de batterie
Étant donné que chaque appareil de batterie représente un emplacement dans lequel une batterie peut être insérée, il doit y avoir un moyen de déterminer quand la batterie est supprimée et réinsérée, remplacée ou modifiée d’une autre manière. Pour ce faire, chaque batterie dans un emplacement particulier est affectée à une balise. Cette balise doit être utilisée pour toutes les requêtes pour obtenir des informations. Si la balise fournie par l’application ne correspond pas à la batterie, la requête échoue, indiquant à l’application que la batterie a changé d’une certaine manière. Pour terminer la requête, une nouvelle balise de batterie est requise. Acquérir la balise à l’aide de l’opération de IOCTL_BATTERY_QUERY_TAG. Si une batterie est présente dans cet emplacement, la balise retournée peut être transmise à l’une des autres batteries IOCTL pour effectuer d’autres fonctions. Sur un système multi-batterie, chaque appareil de batterie (emplacement) émet des étiquettes de batterie indépendamment, de sorte que l’étiquette de deux appareils distincts peut parfois être identique.
Une modification de la balise de batterie ne signifie pas nécessairement que la batterie a été supprimée et réinsérée ou remplacée. Une nouvelle balise peut être générée s’il existe une modification dans l’une des données qui seraient normalement statiques. Par exemple, lorsqu’une batterie est chargée, la dernière capacité entièrement chargée peut avoir changé. La balise peut également changer si la communication de la batterie a été temporairement perdue ou s’il y a eu une notification incorrecte du BIOS. Sur certains systèmes, l’étiquette de batterie peut être mise à jour chaque fois que l’état de l’ac change. Ce comportement est dû à une caractéristique du système de batterie et n’est pas courant.
Chaque fois que l’étiquette de batterie est mise à jour, la batterie doit être traitée comme s’il s’agissait d’une nouvelle batterie et toutes les données mises en cache doivent être re-lues. Si une application doit savoir si la même batterie physique est présente, elle doit vérifier la valeur de BatteryUniqueID dans la mémoire tampon de sortie de IOCTL_BATTERY_QUERY_INFORMATION lorsqu’elle est appelée avec le niveau d’informations BatteryUniqueID.
Rubriques connexes
-
à propos de l' de gestion de l’alimentation