Udostępnij za pośrednictwem


Informacje o baterii

Baterie mogą zapewnić zasilanie dla przenośnych komputerów i komputerów działających na zasilaczu awaryjnym (UPS). Na tych komputerach system operacyjny udostępnia informacje o stanie baterii, dzięki czemu aplikacje mogą zapewnić użytkownikom przydatne funkcje. (Niektóre starsze niestandardowe systemy baterii i urządzenia UPS nie są obsługiwane).

Należy pamiętać, że w tym omówieniu założono, że znasz zarządzanie urządzeniami.

Aby uzyskać informacje o stanie baterii, użyj funkcji GetSystemPowerStatus, która zwraca ogólne informacje o wszystkich źródłach zasilania w systemie. Jeśli to możliwe, należy użyć GetSystemPowerStatus.

W niektórych przypadkach konieczne są jednak szczegółowe informacje o poszczególnych bateriach. W tym celu każde urządzenie baterii uwidacznia interfejs IOCTL. Następujące operacje IOCTL są wykonywane przy użyciu funkcji DeviceIoControl:

IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION

Aby użyć tego interfejsu, aplikacja musi wykonać kilka kroków. Najpierw należy użyć procedur konfiguracji, aby wyliczyć wszystkie urządzenia, które mają interfejs klasy baterii. Należy pamiętać, że te urządzenia reprezentują porty baterii, a nie rzeczywiste baterie obecne w systemie. Aplikacja musi następnie otworzyć dojście do każdego urządzenia, aby można było użyć funkcji DeviceIoControl do wysyłania żądań do urządzenia, a następnie uzyskać tagi dla wszystkich włożonych baterii. Po wykonaniu tych kroków aplikacja może wysyłać zapytania do każdego urządzenia baterii.

Tagi baterii

Ponieważ każde urządzenie baterii reprezentuje gniazdo, w którym można wstawić baterię, należy określić, kiedy bateria jest usuwana i ponownie zasilana, wymieniana lub zmieniana w inny sposób. W tym celu każda bateria w określonym miejscu jest przypisana do tagu. Ten tag musi być używany dla wszystkich zapytań dotyczących informacji. Jeśli tag dostarczony przez aplikację nie pasuje do baterii, zapytanie kończy się niepowodzeniem, wskazując aplikacji, że bateria uległa zmianie w jakiś sposób. Aby pomyślnie ukończyć zapytanie, wymagany jest nowy tag baterii. Uzyskaj tag przy użyciu operacji IOCTL_BATTERY_QUERY_TAG. Jeśli w tym miejscu znajduje się bateria, zwrócony tag można przekazać do dowolnego z pozostałych IOCTL baterii w celu wykonania innych funkcji. W systemie z wieloma bateriami każde urządzenie baterii (gniazdo) niezależnie wystawia tagi baterii, więc tag z dwóch oddzielnych urządzeń może być czasami identyczny.

Zmiana tagu baterii nie musi oznaczać, że bateria została usunięta i ponownie wyremontowana lub zamieniona. Nowy tag można wygenerować, jeśli istnieje zmiana dowolnego z danych, które normalnie byłyby statyczne. Na przykład po zakończeniu ładowania baterii ostatnia w pełni naładowana pojemność mogła ulec zmianie. Tag może również ulec zmianie, jeśli komunikacja z baterią została tymczasowo utracona lub jeśli wystąpiło nieprawidłowe powiadomienie z systemu BIOS. W niektórych systemach tag baterii może być aktualizowany za każdym razem, gdy stan prądu ac zmieni się. Takie zachowanie jest spowodowane charakterystyką systemu baterii i nie jest powszechne.

Za każdym razem, gdy tag baterii jest aktualizowany, bateria powinna być traktowana tak, jakby była to nowa bateria, a wszystkie buforowane dane powinny być ponownie odczytywane. Jeśli aplikacja musi wiedzieć, czy ta sama bateria fizyczna jest obecna, powinna sprawdzić wartość BatteryUniqueID w buforze wyjściowym IOCTL_BATTERY_QUERY_INFORMATION po wywołaniu z BatteryUniqueID poziom informacji.

Informacje o zarządzaniu energią

Wyliczanie urządzeń baterii