Dela via


Batteriinformation

Batterier kan ge ström för bärbara datorer och datorer som körs på en avbrottsfri strömförsörjning (UPS). På dessa datorer tillhandahåller operativsystemet information om batteriets tillstånd så att program kan tillhandahålla användbara funktioner för användaren. (Vissa äldre batterisystem som inte är standard och UPS stöds inte.)

Observera att den här översikten förutsätter att du är bekant med enhetshantering.

Om du vill få information om batteristatusen använder du funktionen GetSystemPowerStatus, som returnerar allmän information om alla strömkällor i systemet. Du bör använda GetSystemPowerStatus när det är möjligt.

I vissa fall krävs dock detaljerad information om varje enskilt batteri. För detta ändamål exponerar varje batterienhet ett IOCTL-gränssnitt. Följande IOCTL-åtgärder utförs med hjälp av funktionen DeviceIoControl:

IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION

Om du vill använda det här gränssnittet måste ett program följa flera steg. Först måste den använda installationsrutiner för att räkna upp alla enheter som har ett gränssnitt för batteriklass. Observera att dessa enheter representerar batteriportarna, inte faktiska batterier som finns i systemet. Programmet måste sedan öppna ett handtag för varje enhet så att det kan använda funktionen DeviceIoControl för att skicka begäranden till enheten och sedan hämta taggar för eventuella batterier som sätts i. När du har slutfört de här stegen kan programmet skicka frågor till varje batterienhet.

Batteritaggar

Eftersom varje batterienhet representerar ett fack där ett batteri kan sättas i, måste det finnas ett sätt att avgöra när batteriet tas bort och sätts tillbaka, bytas ut eller ändras på något annat sätt. För att göra detta tilldelas varje batteri i ett visst fack en tagg. Den här taggen måste användas för alla frågor för information. Om taggen som tillhandahålls av programmet inte matchar batteriet misslyckas frågan, vilket indikerar för programmet att batteriet har ändrats på något sätt. För att slutföra frågan krävs en ny batteritagg. Hämta taggen med hjälp av åtgärden IOCTL_BATTERY_QUERY_TAG. Om ett batteri finns i det facket kan taggen som returneras skickas till någon av de andra batteri-IOCTL:erna för att utföra andra funktioner. I ett system med flera batteri utfärdar varje batterienhet (fack) batteritaggar separat, så taggen från två separata enheter kan ibland vara identisk.

En ändring i batteritaggen innebär inte nödvändigtvis att batteriet har tagits bort och bytts ut igen. En ny tagg kan genereras om någon av de data som normalt skulle vara statiska ändras. När ett batteri till exempel har laddats klart kan den senaste fulladdade kapaciteten ha ändrats. Taggen kan också ändras om batterikommunikationen tillfälligt har gått förlorad eller om det fanns ett felaktigt meddelande från BIOS. I vissa system kan batteritaggen uppdateras när AC-statusen ändras. Det här beteendet beror på en egenskap hos batterisystemet och är inte vanligt.

När batteritaggen uppdateras ska batteriet behandlas som om det vore ett nytt batteri och alla cachelagrade data ska läsas på nytt. Om ett program behöver veta om samma fysiska batteri finns bör det kontrollera värdet för BatteryUniqueID i utdatabufferten för IOCTL_BATTERY_QUERY_INFORMATION när det anropas med BatteryUniqueID informationsnivå.

Om Power Management

uppräkning av batterienheter