Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

124 lines
4.3 KiB

#ifndef _CBATTERY_H
#define _CBATTERY_H
/*
* title: cbattery.h
*
* purpose: header for wdm kernel battery object
*
*/
// HID USAGE PAGE NUMBERS
#define POWER_PAGE 0x84
#define BATTERY_PAGE 0x85
// HID USAGE NUMBERS (Power Page)
#define PRESENT_STATUS_ID 0x02
#define UPS_ID 0x04
#define POWER_SUMMARY_ID 0x24
#define VOLTAGE_ID 0x30
#define CURRENT_ID 0x31
#define CONFIG_VOLTAGE_ID 0x40
#define CONFIG_CURRENT_ID 0x41
#define DELAY_BEFORE_SHUTDOWN_ID 0x57
#define SHUTDOWN_IMMINENT_ID 0x69
#define MANUFACTURER_ID 0xfd
#define PRODUCT_ID 0xfe
#define SERIAL_NUMBER_ID 0xff
// HID USAGE NUMBERS (Battery Page)
#define REMAINING_CAPACITY_LIMIT_ID 0x29
#define CAPACITY_MODE_ID 0x2c
#define BELOW_REMAINING_CAPACITY_ID 0x42
#define CHARGING_ID 0x44
#define DISCHARGING_ID 0x45
#define REMAINING_CAPACITY_ID 0x66
#define FULL_CHARGED_CAPACITY_ID 0x67
#define RUNTIME_TO_EMPTY_ID 0x68
#define DESIGN_CAPACITY_ID 0x83
#define MANUFACTURE_DATE_ID 0x85
#define ICHEMISTRY_ID 0x89
#define WARNING_CAPACITY_LIMIT_ID 0x8c
#define GRANULARITY1_ID 0x8d
#define GRANULARITY2_ID 0x8e
#define OEM_INFO_ID 0x8f
#define AC_PRESENT_ID 0xd0
typedef enum {
PRESENT_STATUS_INDEX, // 0
UPS_INDEX, // 1
POWER_SUMMARY_INDEX, // 2
VOLTAGE_INDEX, // 3
CURRENT_INDEX, // 4
CONFIG_VOLTAGE_INDEX, // 5
CONFIG_CURRENT_INDEX, // 6
DELAY_BEFORE_SHUTDOWN_INDEX, // 7
SHUTDOWN_IMMINENT_INDEX, // 8
MANUFACTURER_INDEX, // 9
PRODUCT_INDEX, // a
SERIAL_NUMBER_INDEX, // b
REMAINING_CAPACITY_LIMIT_INDEX, // c
CAPACITY_MODE_INDEX, // d
BELOW_REMAINING_CAPACITY_INDEX, // e
CHARGING_INDEX, // f
DISCHARGING_INDEX, // 10
REMAINING_CAPACITY_INDEX, // 11
FULL_CHARGED_CAPACITY_INDEX, // 12
RUNTIME_TO_EMPTY_INDEX, // 13
DESIGN_CAPACITY_INDEX, // 14
MANUFACTURE_DATE_INDEX, // 15
CHEMISTRY_INDEX, // 16
WARNING_CAPACITY_LIMIT_INDEX, // 17
GRANULARITY1_INDEX, // 18
GRANULARITY2_INDEX, // 19
OEM_INFO_INDEX, // 1a
AC_PRESENT_INDEX, // 1b
MAX_USAGE_INDEXS // 1c
} USAGE_INDEX;
typedef struct {
USAGE Page;
USAGE UsageID;
} USAGE_ENTRY;
extern USAGE_ENTRY UsageArray[];
class CBattery
{
public: // accessors
CBattery(CHidDevice *);
~CBattery();
NTSTATUS RefreshStatus();
bool InitValues(); // initialize static values from device
bool GetSetValue(USAGE_INDEX, PULONG, bool);
CUString * GetCUString(USAGE_INDEX);
ULONG GetUnit(USAGE_INDEX);
SHORT GetExponent(USAGE_INDEX);
CUsage * GetUsage(USAGE_INDEX);
public: // members
PVOID m_pBatteryClass; // Battery Class handle
CHidDevice * m_pCHidDevice; // the hid device for this battery
BOOLEAN m_bIsCacheValid; // Is cached battery info currently valid?
//
// Battery
//
BOOLEAN m_bRelative; // indicates capacity in percent or absolute values
ULONGLONG m_RefreshTime;
BATTERY_STATUS m_BatteryStatus;
BATTERY_INFORMATION m_BatteryInfo;
PBATTERY_NOTIFY m_pBatteryNotify;
USHORT m_Tag;
CUString * m_pSerialNumber;
CUString * m_pOEMInformation;
CUString * m_pProduct;
CUString * m_pManufacturer;
BATTERY_MANUFACTURE_DATE m_ManufactureDate;
};
#endif // cbattery.h