320 lines
11 KiB
C
320 lines
11 KiB
C
/*
|
|
* batclass.h Battery class functions
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
|
|
#ifndef _BATCLASS_
|
|
#define _BATCLASS_
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Macro to specify battery class functions */
|
|
#ifndef _WINDOWS_
|
|
#define BATTERYCLASSAPI DECLSPEC_IMPORT
|
|
#endif
|
|
|
|
/* Battery device I/O control codes */
|
|
#define IOCTL_BATTERY_QUERY_TAG \
|
|
CTL_CODE( FILE_DEVICE_BATTERY, 0x0010, METHOD_BUFFERED, FILE_READ_ACCESS )
|
|
#define IOCTL_BATTERY_QUERY_INFORMATION \
|
|
CTL_CODE( FILE_DEVICE_BATTERY, 0x0011, METHOD_BUFFERED, FILE_READ_ACCESS )
|
|
#define IOCTL_BATTERY_SET_INFORMATION \
|
|
CTL_CODE( FILE_DEVICE_BATTERY, 0x0012, METHOD_BUFFERED, FILE_WRITE_ACCESS )
|
|
#define IOCTL_BATTERY_QUERY_STATUS \
|
|
CTL_CODE( FILE_DEVICE_BATTERY, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS )
|
|
|
|
/* Battery tag special value */
|
|
#define BATTERY_TAG_INVALID 0L
|
|
|
|
/* Battery capability flags */
|
|
#define BATTERY_SYSTEM_BATTERY 0x80000000L
|
|
#define BATTERY_CAPACITY_RELATIVE 0x40000000L
|
|
#define BATTERY_IS_SHORT_TERM 0x20000000L
|
|
#define BATTERY_SET_CHARGE_SUPPORTED 0x00000001L
|
|
#define BATTERY_SET_DISCHARGE_SUPPORTED 0x00000002L
|
|
|
|
/* Battery capacity special value */
|
|
#define BATTERY_UNKNOWN_CAPACITY 0xFFFFFFFFL
|
|
|
|
/* Battery estimated time special value */
|
|
#define BATTERY_UNKNOWN_TIME 0xFFFFFFFFL
|
|
|
|
/* Maximum battery string size */
|
|
#define MAX_BATTERY_STRING_SIZE 128
|
|
|
|
/* Battery power state flags */
|
|
#define BATTERY_POWER_ON_LINE 0x00000001L
|
|
#define BATTERY_DISCHARGING 0x00000002L
|
|
#define BATTERY_CHARGING 0x00000004L
|
|
#define BATTERY_CRITICAL 0x00000008L
|
|
|
|
/* Special battery status values */
|
|
#define BATTERY_UNKNOWN_VOLTAGE 0xFFFFFFFFL
|
|
#define BATTERY_UNKNOWN_RATE 0x80000000L
|
|
|
|
/* Battery class version numbers */
|
|
#ifndef _WINDOWS_
|
|
#define BATTERY_CLASS_MAJOR_VERSION 0x0001
|
|
#define BATTERY_CLASS_MINOR_VERSION 0x0000
|
|
#endif
|
|
|
|
/* Battery query information levels */
|
|
typedef enum {
|
|
BatteryInformation = 0,
|
|
BatteryGranularityInformation = 1,
|
|
BatteryTemperature = 2,
|
|
BatteryEstimatedTime = 3,
|
|
BatteryDeviceName = 4,
|
|
BatteryManufactureDate = 5,
|
|
BatteryManufactureName = 6,
|
|
BatteryUniqueID = 7,
|
|
BatterySerialNumber = 8
|
|
} BATTERY_QUERY_INFORMATION_LEVEL;
|
|
|
|
/* IOCTL_BATTERY_QUERY_INFORMATION parameters */
|
|
typedef struct _BATTERY_QUERY_INFORMATION {
|
|
ULONG BatteryTag;
|
|
BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
|
|
LONG AtRate;
|
|
} BATTERY_QUERY_INFORMATION;
|
|
typedef BATTERY_QUERY_INFORMATION *PBATTERY_QUERY_INFORMATION;
|
|
|
|
/* Battery information */
|
|
typedef struct _BATTERY_INFORMATION {
|
|
ULONG Capabilities;
|
|
UCHAR Technology;
|
|
UCHAR Reserved[3];
|
|
UCHAR Chemistry[4];
|
|
ULONG DesignedCapacity;
|
|
ULONG FullChargedCapacity;
|
|
ULONG DefaultAlert1;
|
|
ULONG DefaultAlert2;
|
|
ULONG CriticalBias;
|
|
ULONG CycleCount;
|
|
} BATTERY_INFORMATION;
|
|
typedef BATTERY_INFORMATION *PBATTERY_INFORMATION;
|
|
|
|
/* Battery reporting scale */
|
|
#if (NTDDI_VERSION < 0x05010000) && !defined( _NTPOAPI_ )
|
|
typedef struct {
|
|
ULONG Granularity;
|
|
ULONG Capacity;
|
|
} BATTERY_REPORTING_SCALE;
|
|
typedef BATTERY_REPORTING_SCALE *PBATTERY_REPORTING_SCALE;
|
|
#endif
|
|
|
|
/* Battery manufacture date */
|
|
typedef struct _BATTERY_MANUFACTURE_DATE {
|
|
UCHAR Day;
|
|
UCHAR Month;
|
|
USHORT Year;
|
|
} BATTERY_MANUFACTURE_DATE;
|
|
typedef BATTERY_MANUFACTURE_DATE *PBATTERY_MANUFACTURE_DATE;
|
|
|
|
/* Battery set information levels */
|
|
typedef enum {
|
|
BatteryCriticalBias = 0,
|
|
BatteryCharge = 1,
|
|
BatteryDischarge = 2
|
|
} BATTERY_SET_INFORMATION_LEVEL;
|
|
|
|
/* IOCTL_BATTERY_SET_INFORMATION parameters */
|
|
typedef struct _BATTERY_SET_INFORMATION {
|
|
ULONG BatteryTag;
|
|
BATTERY_SET_INFORMATION_LEVEL InformationLevel;
|
|
UCHAR Buffer[1];
|
|
} BATTERY_SET_INFORMATION;
|
|
typedef BATTERY_SET_INFORMATION *PBATTERY_SET_INFORMATION;
|
|
|
|
/* Battery wait status */
|
|
typedef struct _BATTERY_WAIT_STATUS {
|
|
ULONG BatteryTag;
|
|
ULONG Timeout;
|
|
ULONG PowerState;
|
|
ULONG LowCapacity;
|
|
ULONG HighCapacity;
|
|
} BATTERY_WAIT_STATUS;
|
|
typedef BATTERY_WAIT_STATUS *PBATTERY_WAIT_STATUS;
|
|
|
|
/* Battery status */
|
|
typedef struct _BATTERY_STATUS {
|
|
ULONG PowerState;
|
|
ULONG Capacity;
|
|
ULONG Voltage;
|
|
LONG Rate;
|
|
} BATTERY_STATUS;
|
|
typedef BATTERY_STATUS *PBATTERY_STATUS;
|
|
|
|
/* Battery notification */
|
|
#ifndef _WINDOWS_
|
|
typedef struct {
|
|
ULONG PowerState;
|
|
ULONG LowCapacity;
|
|
ULONG HighCapacity;
|
|
} BATTERY_NOTIFY;
|
|
typedef BATTERY_NOTIFY *PBATTERY_NOTIFY;
|
|
#endif
|
|
|
|
/* Battery class callbacks */
|
|
#ifndef _WINDOWS_
|
|
typedef NTSTATUS (NTAPI BCLASS_QUERY_TAG_CALLBACK)( PVOID, PULONG );
|
|
typedef NTSTATUS (NTAPI BCLASS_QUERY_INFORMATION_CALLBACK)( PVOID, ULONG, BATTERY_QUERY_INFORMATION_LEVEL, LONG, PVOID, ULONG, PULONG );
|
|
typedef NTSTATUS (NTAPI BCLASS_QUERY_STATUS_CALLBACK)( PVOID, ULONG, PBATTERY_STATUS );
|
|
typedef NTSTATUS (NTAPI BCLASS_SET_STATUS_NOTIFY_CALLBACK)( PVOID, ULONG, PBATTERY_NOTIFY );
|
|
typedef NTSTATUS (NTAPI BCLASS_SET_INFORMATION_CALLBACK)( PVOID, ULONG, BATTERY_SET_INFORMATION_LEVEL, PVOID );
|
|
typedef NTSTATUS (NTAPI BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK)( PVOID );
|
|
typedef BCLASS_QUERY_TAG_CALLBACK *PBCLASS_QUERY_TAG_CALLBACK;
|
|
typedef BCLASS_QUERY_INFORMATION_CALLBACK *PBCLASS_QUERY_INFORMATION_CALLBACK;
|
|
typedef BCLASS_QUERY_STATUS_CALLBACK *PBCLASS_QUERY_STATUS_CALLBACK;
|
|
typedef BCLASS_SET_STATUS_NOTIFY_CALLBACK *PBCLASS_SET_STATUS_NOTIFY_CALLBACK;
|
|
typedef BCLASS_SET_INFORMATION_CALLBACK *PBCLASS_SET_INFORMATION_CALLBACK;
|
|
typedef BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK *PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK;
|
|
typedef PBCLASS_QUERY_TAG_CALLBACK BCLASS_QUERY_TAG;
|
|
typedef PBCLASS_QUERY_INFORMATION_CALLBACK BCLASS_QUERY_INFORMATION;
|
|
typedef PBCLASS_QUERY_STATUS_CALLBACK BCLASS_QUERY_STATUS;
|
|
typedef PBCLASS_SET_STATUS_NOTIFY_CALLBACK BCLASS_SET_STATUS_NOTIFY;
|
|
typedef PBCLASS_SET_INFORMATION_CALLBACK BCLASS_SET_INFORMATION;
|
|
typedef PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK BCLASS_DISABLE_STATUS_NOTIFY;
|
|
#endif
|
|
|
|
/* Battery miniport information */
|
|
#ifndef _WINDOWS_
|
|
typedef struct {
|
|
USHORT MajorVersion;
|
|
USHORT MinorVersion;
|
|
PVOID Context;
|
|
BCLASS_QUERY_TAG QueryTag;
|
|
BCLASS_QUERY_INFORMATION QueryInformation;
|
|
BCLASS_SET_INFORMATION SetInformation;
|
|
BCLASS_QUERY_STATUS QueryStatus;
|
|
BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
|
|
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
|
|
PDEVICE_OBJECT Pdo;
|
|
PUNICODE_STRING DeviceName;
|
|
} BATTERY_MINIPORT_INFO;
|
|
typedef BATTERY_MINIPORT_INFO *PBATTERY_MINIPORT_INFO;
|
|
#endif
|
|
|
|
/* Battery WMI status */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_STATUS {
|
|
ULONG Tag;
|
|
ULONG RemainingCapacity;
|
|
LONG ChargeRate;
|
|
LONG DischargeRate;
|
|
ULONG Voltage;
|
|
BOOLEAN PowerOnline;
|
|
BOOLEAN Charging;
|
|
BOOLEAN Discharging;
|
|
BOOLEAN Critical;
|
|
} BATTERY_WMI_STATUS;
|
|
typedef BATTERY_WMI_STATUS *PBATTERY_WMI_STATUS;
|
|
#endif
|
|
|
|
/* Battery WMI runtime */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_RUNTIME {
|
|
ULONG Tag;
|
|
ULONG EstimatedRuntime;
|
|
} BATTERY_WMI_RUNTIME;
|
|
typedef BATTERY_WMI_RUNTIME *PBATTERY_WMI_RUNTIME;
|
|
#endif
|
|
|
|
/* Battery WMI temperature */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_TEMPERATURE {
|
|
ULONG Tag;
|
|
ULONG Temperature;
|
|
} BATTERY_WMI_TEMPERATURE;
|
|
typedef BATTERY_WMI_TEMPERATURE *PBATTERY_WMI_TEMPERATURE;
|
|
#endif
|
|
|
|
/* Battery WMI full charged capacity */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_FULL_CHARGED_CAPACITY {
|
|
ULONG Tag;
|
|
ULONG FullChargedCapacity;
|
|
} BATTERY_WMI_FULL_CHARGED_CAPACITY;
|
|
typedef BATTERY_WMI_FULL_CHARGED_CAPACITY *PBATTERY_WMI_FULL_CHARGED_CAPACITY;
|
|
#endif
|
|
|
|
/* Battery WMI cycle count */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_CYCLE_COUNT {
|
|
ULONG Tag;
|
|
ULONG CycleCount;
|
|
} BATTERY_WMI_CYCLE_COUNT;
|
|
typedef BATTERY_WMI_CYCLE_COUNT *PBATTERY_WMI_CYCLE_COUNT;
|
|
#endif
|
|
|
|
/* Battery WMI static data */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_STATIC_DATA {
|
|
ULONG Tag;
|
|
WCHAR ManufactureDate[25];
|
|
BATTERY_REPORTING_SCALE Granularity[4];
|
|
ULONG Capabilities;
|
|
UCHAR Technology;
|
|
ULONG Chemistry;
|
|
ULONG DesignedCapacity;
|
|
ULONG DefaultAlert1;
|
|
ULONG DefaultAlert2;
|
|
ULONG CriticalBias;
|
|
WCHAR Strings[1];
|
|
} BATTERY_WMI_STATIC_DATA;
|
|
typedef BATTERY_WMI_STATIC_DATA *PBATTERY_WMI_STATIC_DATA;
|
|
#endif
|
|
|
|
/* Battery WMI status change */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_WMI_STATUS_CHANGE {
|
|
ULONG Tag;
|
|
BOOLEAN PowerOnline;
|
|
BOOLEAN Charging;
|
|
BOOLEAN Discharging;
|
|
BOOLEAN Critical;
|
|
} BATTERY_WMI_STATUS_CHANGE;
|
|
typedef BATTERY_WMI_STATUS_CHANGE *PBATTERY_WMI_STATUS_CHANGE;
|
|
#endif
|
|
|
|
/* Battery tag change */
|
|
#if (NTDDI_VERSION >= 0x05010000) && !defined( _WINDOWS_ )
|
|
typedef struct _BATTERY_TAG_CHANGE {
|
|
ULONG Tag;
|
|
} BATTERY_TAG_CHANGE;
|
|
typedef BATTERY_TAG_CHANGE *PBATTERY_TAG_CHANGE;
|
|
#endif
|
|
|
|
/* Functions in BATTC.SYS */
|
|
#ifndef _WINDOWS_
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassInitializeDevice( PBATTERY_MINIPORT_INFO, PVOID * );
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassIoctl( PVOID, PIRP );
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassStatusNotify( PVOID );
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassUnload( PVOID );
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassQueryWmiDataBlock( PVOID, PDEVICE_OBJECT, PIRP, ULONG, PULONG, ULONG, PUCHAR );
|
|
BATTERYCLASSAPI NTSTATUS NTAPI BatteryClassSystemControl( PVOID, PVOID, PDEVICE_OBJECT, PIRP, PVOID );
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* _BATCLASS_ */
|