Condividi tramite


Informazioni sulla batteria

Le batterie possono fornire alimentazione 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 meno recenti e upS non sono supportati.

Si noti che questa panoramica presuppone che si abbia familiarità con 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 quando possibile.

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

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, deve usare routine di configurazione per enumerare tutti i dispositivi che dispongono di un'interfaccia della classe 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 per ogni dispositivo in modo che possa usare la funzioneDeviceIoControlper inviare richieste al dispositivo e quindi acquisire i tag per le batterie inserite. Dopo aver completato questi passaggi, l'applicazione può inviare query a ogni dispositivo a batteria.

Tag batteria

Poiché ogni dispositivo batteria rappresenta uno slot in cui è possibile inserire una batteria, è necessario determinare quando la batteria viene rimossa e reinserta, sostituita o modificata in altro modo. A tale scopo, a ogni batteria in uno slot specifico viene assegnato 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 non riesce, a indicare all'applicazione che la batteria è cambiata in qualche modo. Per completare correttamente la query, è necessario un nuovo tag della batteria. Acquisire il tag usando l'operazione di IOCTL_BATTERY_QUERY_TAG. Se in tale slot è presente una batteria, il tag restituito può essere passato a qualsiasi altro IOCTLs della batteria per eseguire altre funzioni. In un sistema a batteria multipla, ogni dispositivo batteria (slot) emette tag della batteria in modo indipendente, quindi il tag di due dispositivi separati potrebbe talvolta essere identico.

Una modifica nel tag della batteria non significa necessariamente che la batteria è stata rimossa e reinsertata o sostituita. È possibile generare un nuovo tag se si verifica una modifica in uno 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 si è verificato un errore di notifica 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 a batteria e non è comune.

Ogni volta che il tag della batteria viene aggiornato, 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 sui di risparmio energia

enumerazione dei dispositivi batteria