Delen via


Informatie over de batterij

Batterijen kunnen voeding leveren voor draagbare computers en computers die worden uitgevoerd op een niet-onderbreekbare voeding (UPS). Op deze computers biedt het besturingssysteem informatie over de status van de batterij, zodat toepassingen nuttige functies voor de gebruiker kunnen bieden. (Sommige oudere niet-standaard batterijsystemen en UPS's worden niet ondersteund.)

In dit overzicht wordt ervan uitgegaan dat u bekend bent met apparaatbeheer.

Gebruik de functie GetSystemPowerStatus om informatie te verkrijgen over de batterijstatus, waarmee algemene informatie over alle energiebronnen in het systeem wordt geretourneerd. Gebruik indien mogelijk GetSystemPowerStatus.

In sommige gevallen is echter gedetailleerde informatie over elke afzonderlijke batterij nodig. Voor dit doel maakt elk batterijapparaat een IOCTL-interface beschikbaar. De volgende IOCTL-bewerkingen worden uitgevoerd met behulp van de functie DeviceIoControl:

IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION

Als u deze interface wilt gebruiken, moet een toepassing verschillende stappen uitvoeren. Ten eerste moet het installatieroutines gebruiken om alle apparaten met een interface van de batterijklasse op te sommen. Houd er rekening mee dat deze apparaten de batterijpoorten vertegenwoordigen, niet de werkelijke batterijen die aanwezig zijn in het systeem. De toepassing moet vervolgens een ingang openen voor elk apparaat, zodat deze de functie DeviceIoControl kan gebruiken om aanvragen naar het apparaat te verzenden en vervolgens tags te verkrijgen voor batterijen die zijn ingevoegd. Nadat u deze stappen hebt voltooid, kan de toepassing query's verzenden naar elk batterijapparaat.

Batterijtags

Omdat elk batterijapparaat een sleuf vertegenwoordigt waarin een batterij kan worden geplaatst, moet er een manier zijn om te bepalen wanneer de batterij wordt verwijderd en opnieuw wordt geplaatst, vervangen of op een andere manier wordt gewijzigd. Hiervoor wordt aan elke batterij in een bepaalde sleuf een tag toegewezen. Deze tag moet worden gebruikt voor alle query's voor informatie. Als de tag van de toepassing niet overeenkomt met de batterij, mislukt de query, wat aangeeft aan de toepassing dat de batterij op een of andere manier is gewijzigd. Als u de query wilt voltooien, is een nieuwe batterijtag vereist. Haal de tag op met behulp van de IOCTL_BATTERY_QUERY_TAG-bewerking. Als een batterij aanwezig is in die sleuf, kan de geretourneerde tag worden doorgegeven aan een van de andere IOCTL's voor de batterij om andere functies uit te voeren. Op een systeem met meerdere accu's geeft elk batterijapparaat (slot) afzonderlijk batterijtags op, zodat de tag van twee afzonderlijke apparaten soms identiek kan zijn.

Een wijziging in de batterijtag betekent niet noodzakelijkerwijs dat de batterij is verwijderd en opnieuw is ingevoegd of vervangen. Er kan een nieuwe tag worden gegenereerd als er een wijziging is in een van de gegevens die normaal gesproken statisch zouden zijn. Wanneer een batterij bijvoorbeeld klaar is met opladen, kan de laatst volledig geladen capaciteit zijn gewijzigd. De tag kan ook veranderen als de communicatie van de batterij tijdelijk is verbroken of als er een onjuiste melding van het BIOS is. Op sommige systemen kan de batterijtag worden bijgewerkt wanneer de ac-status verandert. Dit gedrag wordt veroorzaakt door een kenmerk van het batterijsysteem en is niet gebruikelijk.

Wanneer de batterijtag wordt bijgewerkt, moet de batterij worden behandeld alsof het een nieuwe batterij is en alle gegevens in de cache opnieuw moeten worden gelezen. Als een toepassing moet weten of dezelfde fysieke batterij aanwezig is, moet deze de waarde van BatteryUniqueID controleren in de uitvoerbuffer van IOCTL_BATTERY_QUERY_INFORMATION wanneer deze wordt aangeroepen met het BatteryUniqueID informatieniveau.

over energiebeheer

batterijapparaten opsommen