Application Security Testing: An Integral Part of DevOps
CBattery is a non-MFC class wrapper for the battery related Windows Power
Management API functions. It may be used by notebook/laptops system utilities
developed with Visual C++.
CBattery implements the following public methods:
- BOOL SystemPowerStatusLoaded()
- BOOL ReloadSystemPowerStatus()
- SYSTEM_POWER_STATUS SystemPowerStatus()
- CBattery::AC_LINE_STATUS ACLineStatus()
- CBattery::BATTERY_FLAG BatteryFlag()
- CBattery::BOOL BatteryCharging()
- BYTE BatteryLifePercent()
- long BatteryFullTime()
- long BatteryLifeTime()
- BOOL BatteryIsUnknown()
- BOOL BatteryIsCharging()
- CBattery::DEVICE_POWER_STATE GetDevicePowerState()
- void SetDevice(HANDLE hDevice)
- HANDLE GetDevice()
CBattery contains the following public constants:
- Line status:
- Battery status flags:
- Device power state:
- General constants:
- The system is only capable of estimating BatteryFullTime based on calculations on BatteryLifeTime and BatteryLifePercent. Without smart battery subsystems, this value may not be accurate enough to be useful.
- The class does not use the Sysinfo OCX control.
- The system broadcasts the PBT_APMPOWERSTATUSCHANGE event to all applications when the power status changes. When your application receives this event, it should call the methods of the class again to determine what changed.
- Power management specifications and white papers from the OnNow initiative home page are located at www.microsoft.com/hwdev/onnow.htm.
- The PBT_* messages are documented in the SDKs PBT.H.
- An application can use CBattery::GetDevicePowerState to determine whether a disk or other device is spun up. If the device is not spun up, the application should defer accessing it.
- For more details about APM, one should check the Platform SDK: Hardware.
- Unfortunately, power management features dont work in Windows NT 4.0! However, if youre using a specialized version of Windows NT, modified by your computer manufacturer, the methods may work.
- The demo included application does not use all the all methods implemented in the CBattery class. Check the Battery.cpp and Battery.h files for the class source code.
DownloadsDownload source - 2 Kb
Download demo application - 40 Kb