Bagikan melalui


Informasi Baterai

Baterai dapat menyediakan daya untuk komputer portabel dan komputer yang berjalan pada catu daya yang tidak dapat diinterupsi (UPS). Pada komputer ini, sistem operasi menyediakan informasi tentang status baterai sehingga aplikasi dapat menyediakan fungsi yang berguna bagi pengguna. (Beberapa sistem baterai dan UPS nonstandar yang lebih lama tidak didukung.)

Perhatikan bahwa gambaran umum ini mengasumsikan Anda terbiasa dengan manajemen perangkat.

Untuk mendapatkan informasi tentang status baterai, gunakan fungsi GetSystemPowerStatus , yang mengembalikan informasi umum tentang semua sumber daya dalam sistem. Anda harus menggunakan GetSystemPowerStatus jika memungkinkan.

Namun, dalam beberapa kasus, informasi terperinci tentang setiap baterai individu diperlukan. Untuk tujuan ini, setiap perangkat baterai mengekspos antarmuka IOCTL. Operasi IOCTL berikut dilakukan menggunakan fungsi DeviceIoControl :

IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION

Untuk menggunakan antarmuka ini, aplikasi harus mengikuti beberapa langkah. Pertama, harus menggunakan rutinitas pengaturan untuk menghitung semua perangkat yang memiliki antarmuka kelas baterai. Perhatikan bahwa perangkat ini mewakili port baterai, bukan baterai aktual yang ada dalam sistem. Aplikasi kemudian harus membuka handel ke setiap perangkat sehingga dapat menggunakan fungsi DeviceIoControl untuk mengirim permintaan ke perangkat, dan kemudian memperoleh tag untuk baterai apa pun yang dimasukkan. Setelah menyelesaikan langkah-langkah ini, aplikasi dapat mengirim kueri ke setiap perangkat baterai.

Tag Baterai

Karena setiap perangkat baterai mewakili slot tempat baterai dapat dimasukkan, harus ada cara untuk menentukan kapan baterai dilepas dan dimasukkan kembali, diganti, atau diubah dengan cara lain. Untuk melakukan ini, setiap baterai dalam slot tertentu diberi tag. Tag ini harus digunakan untuk semua kueri untuk informasi. Jika tag yang disediakan oleh aplikasi tidak cocok dengan baterai, kueri gagal, menunjukkan kepada aplikasi bahwa baterai telah berubah dalam beberapa cara. Agar berhasil menyelesaikan kueri, diperlukan tag baterai baru. Dapatkan tag menggunakan operasi IOCTL_BATTERY_QUERY_TAG . Jika baterai ada di slot tersebut, tag yang dikembalikan dapat diteruskan ke salah satu IOCTL baterai lainnya untuk melakukan fungsi lain. Pada sistem multi-baterai, setiap perangkat baterai (slot) mengeluarkan tag baterai secara independen, sehingga tag dari dua perangkat terpisah kadang-kadang bisa identik.

Perubahan tag baterai tidak selalu berarti bahwa baterai dilepas dan diinserksi ulang atau diganti. Tag baru dapat dihasilkan jika ada perubahan dalam salah satu data yang biasanya statis. Misalnya, ketika baterai selesai diisi dayanya, kapasitas terakhir yang terisi penuh mungkin telah berubah. Tag juga dapat berubah jika komunikasi baterai hilang sementara atau jika ada pemberitahuan yang tidak tepat dari BIOS. Pada beberapa sistem, tag baterai dapat diperbarui setiap kali status AC berubah. Perilaku ini disebabkan oleh karakteristik sistem baterai dan tidak umum.

Setiap kali tag baterai diperbarui, baterai harus diperlakukan seolah-olah itu adalah baterai baru dan semua data cache harus dibaca ulang. Jika ada baterai fisik yang sama, aplikasi harus memeriksa nilai BatteryUniqueID dalam buffer output IOCTL_BATTERY_QUERY_INFORMATION ketika dipanggil dengan tingkat informasi BatteryUniqueID .

Tentang Power Management

Menghitung Perangkat Baterai