Akkuinformationen
Akkus können Stromversorgung für tragbare Computer und Computer bereitstellen, die auf einer unterbrechungsfreien Stromversorgung (USV) ausgeführt werden. Auf diesen Computern stellt das Betriebssystem Informationen über den Zustand des Akkus bereit, sodass Anwendungen nützliche Funktionen für den Benutzer bereitstellen können. (Einige ältere nicht standardmäßige Akkusysteme und UPS werden nicht unterstützt.)
Beachten Sie, dass in dieser Übersicht davon ausgegangen wird, dass Sie mit der Geräteverwaltung vertraut sind.
Um Informationen über den Akku status zu erhalten, verwenden Sie die GetSystemPowerStatus-Funktion, die allgemeine Informationen zu allen Stromquellen im System zurückgibt. Sie sollten GetSystemPowerStatus nach Möglichkeit verwenden.
In einigen Fällen sind jedoch detaillierte Informationen zu jedem einzelnen Akku erforderlich. Zu diesem Zweck macht jedes Akkugerät eine IOCTL-Schnittstelle verfügbar. Die folgenden IOCTL-Vorgänge werden mithilfe der DeviceIoControl-Funktion ausgeführt:
IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION
Um diese Schnittstelle verwenden zu können, muss eine Anwendung mehrere Schritte ausführen. Zunächst müssen Setuproutinen verwendet werden, um alle Geräte aufzulisten, die über eine Batterieklassenschnittstelle verfügen. Beachten Sie, dass diese Geräte die Akkuanschlüsse darstellen, nicht die tatsächlichen Akkus, die im System vorhanden sind. Die Anwendung muss dann ein Handle für jedes Gerät öffnen, damit sie die DeviceIoControl-Funktion verwenden kann, um Anforderungen an das Gerät zu senden, und dann Tags für alle eingesteckten Akkus abrufen kann. Nach Abschluss dieser Schritte kann die Anwendung Abfragen an jedes Akkugerät senden.
Da jedes Akkugerät einen Steckplatz darstellt, in den eine Batterie eingesteckt werden kann, muss es eine Möglichkeit geben, zu bestimmen, wann der Akku entfernt und wieder eingefügt, ersetzt oder auf andere Weise gewechselt wird. Zu diesem Zweck wird jedem Akku in einem bestimmten Steckplatz ein Tag zugewiesen. Dieses Tag muss für alle Abfragen von Informationen verwendet werden. Wenn das von der Anwendung bereitgestellte Tag nicht mit dem Akku übereinstimmt, schlägt die Abfrage fehl, was der Anwendung anzeigt, dass sich der Akku in irgendeiner Weise geändert hat. Um die Abfrage erfolgreich abzuschließen, ist ein neues Akkutag erforderlich. Rufen Sie das Tag mithilfe des vorgangs IOCTL_BATTERY_QUERY_TAG ab. Wenn ein Akku in diesem Steckplatz vorhanden ist, kann das zurückgegebene Tag an eine der anderen Akku-IOCTLs übergeben werden, um andere Funktionen auszuführen. Bei einem Mehrbatteriesystem gibt jedes Akkugerät (Steckplatz) Akkutags unabhängig aus, sodass das Tag von zwei separaten Geräten manchmal identisch sein kann.
Eine Änderung des Akkutags bedeutet nicht unbedingt, dass der Akku entfernt und wieder eingefügt oder ausgetauscht wurde. Ein neues Tag kann generiert werden, wenn sich die Daten ändern, die normalerweise statisch sind. Wenn beispielsweise der Akku geladen ist, kann sich die letzte vollständig geladene Kapazität geändert haben. Das Tag kann sich auch ändern, wenn die Akkukommunikation vorübergehend unterbrochen wurde oder eine falsche Benachrichtigung vom BIOS aufgetreten ist. Auf einigen Systemen kann das Akkutag aktualisiert werden, wenn sich die Wechselstrom-status ändert. Dieses Verhalten ist auf ein Merkmal des Akkusystems zurückzuführen und ist nicht üblich.
Wenn das Akkutag aktualisiert wird, sollte der Akku wie ein neuer Akku behandelt werden, und alle zwischengespeicherten Daten sollten erneut gelesen werden. Wenn eine Anwendung wissen muss, ob derselbe physische Akku vorhanden ist, sollte sie den Wert von BatteryUniqueID im Ausgangspuffer von IOCTL_BATTERY_QUERY_INFORMATION überprüfen, wenn sie mit der BatteryUniqueID-Informationsebene aufgerufen wird.