Informazioni sulla batteria

Le batterie possono fornire energia per computer portatili e computer in esecuzione su un alimentatore non funzionante (UPS). In questi computer il sistema operativo fornisce informazioni sullo stato della batteria in modo che le applicazioni possano fornire funzioni utili per l'utente. Alcuni sistemi di batteria non standard precedenti e UPS non sono supportati.

Si noti che questa panoramica presuppone che si abbia familiarità con la gestione dei dispositivi.

Per ottenere informazioni sullo stato della batteria, usare la funzione GetSystemPowerStatus , che restituisce informazioni generali su tutte le fonti di alimentazione nel sistema. È consigliabile usare GetSystemPowerStatus ogni volta che è possibile.

In alcuni casi, tuttavia, sono necessarie informazioni dettagliate su ogni singola batteria. A questo scopo, ogni dispositivo della batteria espone un'interfaccia IOCTL. Le operazioni IOCTL seguenti vengono eseguite usando la funzione DeviceIoControl :

IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION

Per usare questa interfaccia, un'applicazione deve seguire diversi passaggi. Prima di tutto, è necessario usare le routine di configurazione per enumerare tutti i dispositivi che dispongono di un'interfaccia della classe di batteria. Si noti che questi dispositivi rappresentano le porte della batteria, non le batterie effettive presenti nel sistema. L'applicazione deve quindi aprire un handle a ogni dispositivo in modo che possa usare la funzione DeviceIoControl per inviare richieste al dispositivo e quindi acquisire tag per le batterie inserite. Al termine di questi passaggi, l'applicazione può inviare query a ogni dispositivo della batteria.

Tag batteria

Poiché ogni dispositivo della batteria rappresenta uno slot in cui è possibile inserire una batteria, è necessario determinare quando la batteria viene rimossa e reinsertata, sostituita o modificata in qualsiasi altro modo. A tale scopo, ogni batteria in uno slot specifico viene assegnata un tag. Questo tag deve essere usato per tutte le query per informazioni. Se il tag fornito dall'applicazione non corrisponde alla batteria, la query ha esito negativo, indicando all'applicazione che la batteria è cambiata in qualche modo. Per completare correttamente la query, è necessario un nuovo tag di batteria. Acquisire il tag usando l'operazione di IOCTL_BATTERY_QUERY_TAG . Se una batteria è presente in tale slot, il tag restituito può essere passato a uno degli altri IOCTL della batteria per eseguire altre funzioni. In un sistema a batteria multipla ogni dispositivo batteria (slot) genera tag di batteria in modo indipendente, quindi il tag da due dispositivi separati potrebbe essere allo stesso tempo identico.

Una modifica nel tag della batteria non significa necessariamente che la batteria è stata rimossa e reinsertata o sostituita. Un nuovo tag può essere generato se si verifica una modifica in uno qualsiasi dei dati normalmente statici. Ad esempio, quando una batteria viene ricaricata, l'ultima capacità completamente carica può essere cambiata. Il tag può anche cambiare se la comunicazione della batteria è stata temporaneamente persa o se è presente una notifica non corretta dal BIOS. In alcuni sistemi, il tag della batteria può essere aggiornato ogni volta che lo stato ac cambia. Questo comportamento è dovuto a una caratteristica del sistema della batteria e non è comune.

Ogni volta che viene aggiornato il tag della batteria, la batteria deve essere considerata come se fosse una nuova batteria e tutti i dati memorizzati nella cache devono essere rilette. Se un'applicazione deve sapere se è presente la stessa batteria fisica, deve controllare il valore di BatteryUniqueID nel buffer di output di IOCTL_BATTERY_QUERY_INFORMATION quando viene chiamato con il livello di informazioni BatteryUniqueID .

Informazioni su Power Management

Enumerazione dei dispositivi batteria