ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

batclass.h
Go to the documentation of this file.
00001 /*
00002  * batclass.h
00003  *
00004  * Battery class driver interface
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #pragma once
00024 
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028 
00029 /* Battery device GUIDs */
00030 
00031 DEFINE_GUID(GUID_DEVICE_BATTERY,
00032   0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
00033 
00034 #if (NTDDI_VERSION >= NTDDI_WINXP)
00035 DEFINE_GUID(BATTERY_STATUS_WMI_GUID,
00036   0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a);
00037 DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID,
00038   0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec);
00039 DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID,
00040   0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2);
00041 DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID,
00042   0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05);
00043 DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID,
00044   0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71);
00045 DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID,
00046   0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55);
00047 DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID,
00048   0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64);
00049 DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID,
00050   0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88);
00051 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
00052 
00053 #ifndef _BATCLASS_
00054 #define _BATCLASS_
00055 
00056 /* BATTERY_INFORMATION.Capabilities constants */
00057 #define BATTERY_SET_CHARGE_SUPPORTED      0x00000001
00058 #define BATTERY_SET_DISCHARGE_SUPPORTED   0x00000002
00059 #define BATTERY_SET_RESUME_SUPPORTED      0x00000004
00060 #define BATTERY_IS_SHORT_TERM             0x20000000
00061 #define BATTERY_CAPACITY_RELATIVE         0x40000000
00062 #define BATTERY_SYSTEM_BATTERY            0x80000000
00063 
00064 /* BATTERY_INFORMATION.Capacity constants */
00065 #define BATTERY_UNKNOWN_CAPACITY          0xFFFFFFFF
00066 
00067 /* BatteryEstimatedTime constant */
00068 #define BATTERY_UNKNOWN_TIME              0x80000000
00069 
00070 #define MAX_BATTERY_STRING_SIZE           128
00071 
00072 /* BATTERY_STATUS.PowerState flags */
00073 #define BATTERY_POWER_ON_LINE             0x00000001
00074 #define BATTERY_DISCHARGING               0x00000002
00075 #define BATTERY_CHARGING                  0x00000004
00076 #define BATTERY_CRITICAL                  0x00000008
00077 
00078 /* BATTERY_STATUS.Voltage constant */
00079 #define BATTERY_UNKNOWN_VOLTAGE           0xFFFFFFFF
00080 
00081 /* BATTERY_STATUS.Rate constant */
00082 #define BATTERY_UNKNOWN_RATE              0x80000000
00083 
00084 #define IOCTL_BATTERY_QUERY_TAG \
00085   CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS)
00086 #define IOCTL_BATTERY_QUERY_INFORMATION \
00087   CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS)
00088 #define IOCTL_BATTERY_SET_INFORMATION \
00089   CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS)
00090 #define IOCTL_BATTERY_QUERY_STATUS \
00091   CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS)
00092 
00093 /* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */
00094 #define BATTERY_TAG_INVALID 0
00095 
00096 typedef enum _BATTERY_QUERY_INFORMATION_LEVEL {
00097   BatteryInformation = 0,
00098   BatteryGranularityInformation,
00099   BatteryTemperature,
00100   BatteryEstimatedTime,
00101   BatteryDeviceName,
00102   BatteryManufactureDate,
00103   BatteryManufactureName,
00104   BatteryUniqueID,
00105   BatterySerialNumber
00106 } BATTERY_QUERY_INFORMATION_LEVEL;
00107 
00108 typedef struct _BATTERY_QUERY_INFORMATION {
00109   ULONG BatteryTag;
00110   BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
00111   LONG AtRate;
00112 } BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION;
00113 
00114 typedef struct _BATTERY_INFORMATION {
00115   ULONG Capabilities;
00116   UCHAR Technology;
00117   UCHAR Reserved[3];
00118   UCHAR Chemistry[4];
00119   ULONG DesignedCapacity;
00120   ULONG FullChargedCapacity;
00121   ULONG DefaultAlert1;
00122   ULONG DefaultAlert2;
00123   ULONG CriticalBias;
00124   ULONG CycleCount;
00125 } BATTERY_INFORMATION, *PBATTERY_INFORMATION;
00126 
00127 typedef struct _BATTERY_MANUFACTURE_DATE {
00128   UCHAR Day;
00129   UCHAR Month;
00130   USHORT Year;
00131 } BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
00132 
00133 typedef enum _BATTERY_SET_INFORMATION_LEVEL {
00134   BatteryCriticalBias = 0,
00135   BatteryCharge,
00136   BatteryDischarge
00137 } BATTERY_SET_INFORMATION_LEVEL;
00138 
00139 typedef struct _BATTERY_SET_INFORMATION {
00140   ULONG BatteryTag;
00141   BATTERY_SET_INFORMATION_LEVEL InformationLevel;
00142   UCHAR Buffer[1];
00143 } BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;
00144 
00145 typedef struct _BATTERY_WAIT_STATUS {
00146   ULONG BatteryTag;
00147   ULONG Timeout;
00148   ULONG PowerState;
00149   ULONG LowCapacity;
00150   ULONG HighCapacity;
00151 } BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;
00152 
00153 typedef struct _BATTERY_STATUS {
00154   ULONG PowerState;
00155   ULONG Capacity;
00156   ULONG Voltage;
00157   LONG Rate;
00158 } BATTERY_STATUS, *PBATTERY_STATUS;
00159 
00160 #ifndef _WINDOWS_H
00161 
00162 /* BATTERY_MINIPORT_INFO.XxxVersion */
00163 #define BATTERY_CLASS_MAJOR_VERSION       0x0001
00164 #define BATTERY_CLASS_MINOR_VERSION       0x0000
00165 
00166 typedef NTSTATUS
00167 (NTAPI BCLASS_QUERY_TAG_CALLBACK)(
00168   IN PVOID Context,
00169   OUT PULONG BatteryTag);
00170 typedef BCLASS_QUERY_TAG_CALLBACK *PBCLASS_QUERY_TAG_CALLBACK;
00171 
00172 typedef NTSTATUS
00173 (NTAPI BCLASS_QUERY_INFORMATION_CALLBACK)(
00174   IN PVOID Context,
00175   IN ULONG BatteryTag,
00176   IN BATTERY_QUERY_INFORMATION_LEVEL Level,
00177   IN LONG AtRate,
00178   OUT PVOID Buffer,
00179   IN ULONG BufferLength,
00180   OUT PULONG ReturnedLength);
00181 typedef BCLASS_QUERY_INFORMATION_CALLBACK *PBCLASS_QUERY_INFORMATION_CALLBACK;
00182 
00183 typedef NTSTATUS
00184 (NTAPI BCLASS_QUERY_STATUS_CALLBACK)(
00185   IN PVOID Context,
00186   IN ULONG BatteryTag,
00187   OUT PBATTERY_STATUS BatteryStatus);
00188 typedef BCLASS_QUERY_STATUS_CALLBACK *PBCLASS_QUERY_STATUS_CALLBACK;
00189 
00190 typedef struct _BATTERY_NOTIFY {
00191   ULONG PowerState;
00192   ULONG LowCapacity;
00193   ULONG HighCapacity;
00194 } BATTERY_NOTIFY, *PBATTERY_NOTIFY;
00195 
00196 typedef NTSTATUS
00197 (NTAPI BCLASS_SET_STATUS_NOTIFY_CALLBACK)(
00198   IN PVOID Context,
00199   IN ULONG BatteryTag,
00200   IN PBATTERY_NOTIFY BatteryNotify);
00201 typedef BCLASS_SET_STATUS_NOTIFY_CALLBACK *PBCLASS_SET_STATUS_NOTIFY_CALLBACK;
00202 
00203 typedef NTSTATUS
00204 (NTAPI BCLASS_SET_INFORMATION_CALLBACK)(
00205   IN PVOID Context,
00206   IN ULONG BatteryTag,
00207   IN BATTERY_SET_INFORMATION_LEVEL Level,
00208   IN PVOID Buffer OPTIONAL);
00209 typedef BCLASS_SET_INFORMATION_CALLBACK *PBCLASS_SET_INFORMATION_CALLBACK;
00210 
00211 typedef NTSTATUS
00212 (NTAPI BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK)(
00213   IN PVOID Context);
00214 typedef BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK *PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK;
00215 
00216 typedef PBCLASS_QUERY_TAG_CALLBACK BCLASS_QUERY_TAG;
00217 typedef PBCLASS_QUERY_INFORMATION_CALLBACK BCLASS_QUERY_INFORMATION;
00218 typedef PBCLASS_QUERY_STATUS_CALLBACK BCLASS_QUERY_STATUS;
00219 typedef PBCLASS_SET_STATUS_NOTIFY_CALLBACK BCLASS_SET_STATUS_NOTIFY;
00220 typedef PBCLASS_SET_INFORMATION_CALLBACK BCLASS_SET_INFORMATION;
00221 typedef PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK BCLASS_DISABLE_STATUS_NOTIFY;
00222 
00223 typedef struct _BATTERY_MINIPORT_INFO {
00224   USHORT MajorVersion;
00225   USHORT MinorVersion;
00226   PVOID Context;
00227   BCLASS_QUERY_TAG QueryTag;
00228   BCLASS_QUERY_INFORMATION QueryInformation;
00229   BCLASS_SET_INFORMATION SetInformation;
00230   BCLASS_QUERY_STATUS QueryStatus;
00231   BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
00232   BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
00233   PDEVICE_OBJECT Pdo;
00234   PUNICODE_STRING DeviceName;
00235 } BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO;
00236 
00237 #if (NTDDI_VERSION >= NTDDI_WINXP)
00238 
00239 typedef struct _BATTERY_WMI_STATUS {
00240   ULONG Tag;
00241   ULONG RemainingCapacity;
00242   LONG ChargeRate;
00243   LONG DischargeRate;
00244   ULONG Voltage;
00245   BOOLEAN PowerOnline;
00246   BOOLEAN Charging;
00247   BOOLEAN Discharging;
00248   BOOLEAN Critical;
00249 } BATTERY_WMI_STATUS, *PBATTERY_WMI_STATUS;
00250 
00251 typedef struct _BATTERY_WMI_RUNTIME {
00252   ULONG Tag;
00253   ULONG EstimatedRuntime;
00254 } BATTERY_WMI_RUNTIME, *PBATTERY_WMI_RUNTIME;
00255 
00256 typedef struct _BATTERY_WMI_TEMPERATURE {
00257   ULONG Tag;
00258   ULONG Temperature;
00259 } BATTERY_WMI_TEMPERATURE, *PBATTERY_WMI_TEMPERATURE;
00260 
00261 typedef struct _BATTERY_WMI_FULL_CHARGED_CAPACITY {
00262   ULONG Tag;
00263   ULONG FullChargedCapacity;
00264 } BATTERY_WMI_FULL_CHARGED_CAPACITY, *PBATTERY_WMI_FULL_CHARGED_CAPACITY;
00265 
00266 typedef struct _BATTERY_WMI_CYCLE_COUNT {
00267   ULONG Tag;
00268   ULONG CycleCount;
00269 } BATTERY_WMI_CYCLE_COUNT, *PBATTERY_WMI_CYCLE_COUNT;
00270 
00271 typedef struct _BATTERY_WMI_STATIC_DATA {
00272   ULONG Tag;
00273   WCHAR ManufactureDate[25];
00274   BATTERY_REPORTING_SCALE Granularity [4];
00275   ULONG Capabilities;
00276   UCHAR Technology;
00277   ULONG Chemistry;
00278   ULONG DesignedCapacity;
00279   ULONG DefaultAlert1;
00280   ULONG DefaultAlert2;
00281   ULONG CriticalBias;
00282   WCHAR Strings[1];
00283 } BATTERY_WMI_STATIC_DATA, *PBATTERY_WMI_STATIC_DATA;
00284 
00285 typedef struct _BATTERY_WMI_STATUS_CHANGE {
00286   ULONG Tag;
00287   BOOLEAN PowerOnline;
00288   BOOLEAN Charging;
00289   BOOLEAN Discharging;
00290   BOOLEAN Critical;
00291 } BATTERY_WMI_STATUS_CHANGE, *PBATTERY_WMI_STATUS_CHANGE;
00292 
00293 typedef struct _BATTERY_TAG_CHANGE {
00294   ULONG Tag;
00295 } BATTERY_TAG_CHANGE, *PBATTERY_TAG_CHANGE;
00296 
00297 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
00298 
00299 #if defined(_BATTERYCLASS_)
00300 #define BCLASSAPI
00301 #else
00302 #define BCLASSAPI DECLSPEC_IMPORT
00303 #endif
00304 
00305 BCLASSAPI
00306 NTSTATUS
00307 NTAPI
00308 BatteryClassInitializeDevice(
00309   IN PBATTERY_MINIPORT_INFO MiniportInfo,
00310   IN PVOID *ClassData);
00311 
00312 BCLASSAPI
00313 NTSTATUS
00314 NTAPI
00315 BatteryClassIoctl(
00316   IN PVOID ClassData,
00317   IN OUT PIRP Irp);
00318 
00319 BCLASSAPI
00320 NTSTATUS
00321 NTAPI
00322 BatteryClassStatusNotify(
00323   IN PVOID  ClassData);
00324 
00325 #if (NTDDI_VERSION >= NTDDI_WINXP)
00326 
00327 BCLASSAPI
00328 NTSTATUS
00329 NTAPI
00330 BatteryClassQueryWmiDataBlock(
00331   IN PVOID ClassData,
00332   IN OUT PDEVICE_OBJECT DeviceObject,
00333   IN OUT PIRP Irp,
00334   IN ULONG GuidIndex,
00335   OUT PULONG InstanceLengthArray,
00336   IN ULONG OutBufferSize,
00337   OUT PUCHAR Buffer OPTIONAL);
00338 
00339 BCLASSAPI
00340 NTSTATUS
00341 NTAPI
00342 BatteryClassSystemControl(
00343   IN PVOID ClassData,
00344   IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
00345   IN PDEVICE_OBJECT DeviceObject,
00346   IN OUT PIRP Irp,
00347   OUT PVOID Disposition); /* PSYSCTL_IRP_DISPOSITION */
00348 
00349 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
00350 
00351 BCLASSAPI
00352 NTSTATUS
00353 NTAPI
00354 BatteryClassUnload(
00355   IN PVOID ClassData);
00356 
00357 #endif /* _WINDOWS_H */
00358 
00359 #endif /* _BATCLASS_ */
00360 
00361 #ifdef __cplusplus
00362 }
00363 #endif

Generated on Sun May 27 2012 04:31:08 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.