배터리 정보
배터리는 UPS(무정전 전원 공급 장치)에서 실행되는 휴대용 컴퓨터 및 컴퓨터에 전원을 공급할 수 있습니다. 이러한 컴퓨터에서 운영 체제는 애플리케이션이 사용자에게 유용한 기능을 제공할 수 있도록 배터리 상태에 대한 정보를 제공합니다. (일부 오래된 비표준 배터리 시스템 및 UPS는 지원되지 않습니다.)
이 개요에서는 디바이스 관리에 익숙하다고 가정합니다.
배터리 상태 대한 정보를 얻으려면 시스템의 모든 전원에 대한 일반 정보를 반환하는 GetSystemPowerStatus 함수를 사용합니다. 가능하면 GetSystemPowerStatus 를 사용해야 합니다.
그러나 경우에 따라 각 개별 배터리에 대한 자세한 정보가 필요합니다. 이를 위해 각 배터리 디바이스는 IOCTL 인터페이스를 노출합니다. 다음 IOCTL 작업은 DeviceIoControl 함수를 사용하여 수행됩니다.
IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION
이 인터페이스를 사용하려면 애플리케이션이 여러 단계를 수행해야 합니다. 먼저 설정 루틴을 사용하여 배터리 클래스 인터페이스가 있는 모든 디바이스를 열거해야 합니다. 이러한 디바이스는 시스템에 있는 실제 배터리가 아닌 배터리 포트를 나타냅니다. 그런 다음, DeviceIoControl 함수를 사용하여 디바이스에 요청을 보낸 다음 삽입된 배터리에 대한 태그를 획득할 수 있도록 애플리케이션이 각 디바이스에 대한 핸들을 열어야 합니다. 이러한 단계를 완료한 후 애플리케이션은 각 배터리 디바이스에 쿼리를 보낼 수 있습니다.
배터리 태그
각 배터리 장치는 배터리를 삽입할 수 있는 슬롯을 나타내기 때문에 배터리가 제거되고 다시 삽입, 교체 또는 변경되는 시기를 결정하는 방법이 있어야 합니다. 이를 위해 특정 슬롯의 각 배터리에 태그가 할당됩니다. 이 태그는 정보를 위해 모든 쿼리에 사용해야 합니다. 애플리케이션에서 제공하는 태그가 배터리와 일치하지 않으면 쿼리가 실패하여 애플리케이션에 배터리가 어떤 식으로든 변경되었음을 나타냅니다. 쿼리를 성공적으로 완료하려면 새 배터리 태그가 필요합니다. IOCTL_BATTERY_QUERY_TAG 작업을 사용하여 태그를 가져옵니다. 해당 슬롯에 배터리가 있는 경우 반환된 태그를 다른 배터리 IOCTL에 전달하여 다른 기능을 수행할 수 있습니다. 다중 배터리 시스템에서 각 배터리 디바이스(슬롯)는 배터리 태그를 독립적으로 실행하므로 두 개의 개별 디바이스의 태그가 때때로 동일할 수 있습니다.
배터리 태그가 변경되었다고 해서 반드시 배터리가 제거되고 다시 삽입되거나 교체된 것은 아닙니다. 일반적으로 정적인 데이터가 변경되면 새 태그를 생성할 수 있습니다. 예를 들어 배터리 충전이 완료되면 마지막으로 완전히 충전된 용량이 변경되었을 수 있습니다. 배터리 통신이 일시적으로 끊어졌거나 BIOS에서 부적절한 알림이 있는 경우에도 태그가 변경됩니다. 일부 시스템에서는 AC 상태 변경될 때마다 배터리 태그가 업데이트될 수 있습니다. 이 동작은 배터리 시스템의 특성으로 인해 발생하며 일반적이지 않습니다.
배터리 태그가 업데이트될 때마다 배터리는 새 배터리인 것처럼 처리되고 캐시된 모든 데이터를 다시 읽어야 합니다. 애플리케이션이 동일한 물리적 배터리가 있는지 확인해야 하는 경우 BatteryUniqueID 정보 수준으로 호출될 때 IOCTL_BATTERY_QUERY_INFORMATION 출력 버퍼에 BatteryUniqueID 값을 검사 합니다.
관련 항목