jwabatclass.pas 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. {******************************************************************************}
  2. { }
  3. { Battery class driver API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: batclass.h, released June 2000. The original Pascal }
  9. { code is: BatClass.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaBatClass;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "BatClass.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaWinIoctl, JwaWinType;
  51. //
  52. // Battery device GUID
  53. //
  54. const
  55. GUID_DEVICE_BATTERY: TGUID = (D1:$72631e54; D2:$78A4; D3:$11d0; D4:($bc, $f7, $00, $aa, $00, $b7, $b3, $2a));
  56. {$EXTERNALSYM GUID_DEVICE_BATTERY}
  57. BATTERY_STATUS_WMI_GUID: TGUID = (D1:$fc4670d1; D2:$ebbf; D3:$416e; D4:($87, $ce, $37, $4a, $4e, $bc, $11, $1a));
  58. {$EXTERNALSYM BATTERY_STATUS_WMI_GUID}
  59. BATTERY_RUNTIME_WMI_GUID: TGUID = (D1:$535a3767; D2:$1ac2; D3:$49bc; D4:($a0, $77, $3f, $7a, $02, $e4, $0a, $ec));
  60. {$EXTERNALSYM BATTERY_RUNTIME_WMI_GUID}
  61. BATTERY_TEMPERATURE_WMI_GUID: TGUID = (D1:$1a52a14d; D2:$adce; D3:$4a44; D4:($9a, $3e, $c8, $d8, $f1, $5f, $f2, $c2));
  62. {$EXTERNALSYM BATTERY_TEMPERATURE_WMI_GUID}
  63. BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID: TGUID = (D1:$40b40565; D2:$96f7; D3:$4435; D4:($86, $94, $97, $e0, $e4, $39, $59, $05));
  64. {$EXTERNALSYM BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID}
  65. BATTERY_CYCLE_COUNT_WMI_GUID: TGUID = (D1:$ef98db24; D2:$0014; D3:$4c25; D4:($a5, $0b, $c7, $24, $ae, $5c, $d3, $71));
  66. {$EXTERNALSYM BATTERY_CYCLE_COUNT_WMI_GUID}
  67. BATTERY_STATIC_DATA_WMI_GUID: TGUID = (D1:$05e1e463; D2:$e4e2; D3:$4ea9; D4:($80, $cb, $9b, $d4, $b3, $ca, $06, $55));
  68. {$EXTERNALSYM BATTERY_STATIC_DATA_WMI_GUID}
  69. BATTERY_STATUS_CHANGE_WMI_GUID: TGUID = (D1:$cddfa0c3; D2:$7c5b; D3:$4e43; D4:($a0, $34, $05, $9f, $a5, $b8, $43, $64));
  70. {$EXTERNALSYM BATTERY_STATUS_CHANGE_WMI_GUID}
  71. BATTERY_TAG_CHANGE_WMI_GUID: TGUID = (D1:$5e1f6e19; D2:$8786; D3:$4d23; D4:($94, $fc, $9e, $74, $6b, $d5, $d8, $88));
  72. {$EXTERNALSYM BATTERY_TAG_CHANGE_WMI_GUID}
  73. //
  74. // Battery driver interface
  75. //
  76. // IOCTL_BATTERY_QUERY_TAG
  77. // IOCTL_BATTERY_QUERY_INFORMATION
  78. // IOCTL_BATTERY_SET_INFORMATION
  79. // IOCTL_BATTERY_QUERY_STATUS
  80. //
  81. //
  82. // IOCTL_BATTERY_QUERY_TAG
  83. //
  84. IOCTL_BATTERY_QUERY_TAG = (FILE_DEVICE_BATTERY shl 16) or (FILE_READ_ACCESS shl 14) or ($10 shl 2) or METHOD_BUFFERED;
  85. {$EXTERNALSYM IOCTL_BATTERY_QUERY_TAG}
  86. BATTERY_TAG_INVALID = 0;
  87. {$EXTERNALSYM BATTERY_TAG_INVALID}
  88. //
  89. // IOCTL_BATTERY_QUERY_INFORMATION
  90. //
  91. IOCTL_BATTERY_QUERY_INFORMATION = (FILE_DEVICE_BATTERY shl 16) or (FILE_READ_ACCESS shl 14) or ($11 shl 2) or METHOD_BUFFERED;
  92. {$EXTERNALSYM IOCTL_BATTERY_QUERY_INFORMATION}
  93. type
  94. BATTERY_QUERY_INFORMATION_LEVEL = (
  95. BatteryInformation,
  96. BatteryGranularityInformation,
  97. BatteryTemperature,
  98. BatteryEstimatedTime,
  99. BatteryDeviceName,
  100. BatteryManufactureDate,
  101. BatteryManufactureName,
  102. BatteryUniqueID,
  103. BatterySerialNumber);
  104. {$EXTERNALSYM BATTERY_QUERY_INFORMATION_LEVEL}
  105. TBatteryQueryInformationLevel = BATTERY_QUERY_INFORMATION_LEVEL;
  106. _BATTERY_QUERY_INFORMATION = record
  107. BatteryTag: ULONG;
  108. InformationLevel: BATTERY_QUERY_INFORMATION_LEVEL;
  109. AtRate: LONG;
  110. end;
  111. {$EXTERNALSYM _BATTERY_QUERY_INFORMATION}
  112. BATTERY_QUERY_INFORMATION = _BATTERY_QUERY_INFORMATION;
  113. {$EXTERNALSYM BATTERY_QUERY_INFORMATION}
  114. PBATTERY_QUERY_INFORMATION = ^BATTERY_QUERY_INFORMATION;
  115. {$EXTERNALSYM PBATTERY_QUERY_INFORMATION}
  116. TBatteryQueryInformation = BATTERY_QUERY_INFORMATION;
  117. PBatteryQueryInformation = PBATTERY_QUERY_INFORMATION;
  118. //
  119. // Format of data returned when
  120. // BATTERY_INFORMATION_LEVEL = BatteryInformation
  121. //
  122. _BATTERY_INFORMATION = record
  123. Capabilities: ULONG;
  124. Technology: UCHAR;
  125. Reserved: array [0..2] of UCHAR;
  126. Chemistry: array [0..3] of UCHAR;
  127. DesignedCapacity: ULONG;
  128. FullChargedCapacity: ULONG;
  129. DefaultAlert1: ULONG;
  130. DefaultAlert2: ULONG;
  131. CriticalBias: ULONG;
  132. CycleCount: ULONG;
  133. end;
  134. {$EXTERNALSYM _BATTERY_INFORMATION}
  135. BATTERY_INFORMATION = _BATTERY_INFORMATION;
  136. {$EXTERNALSYM BATTERY_INFORMATION}
  137. PBATTERY_INFORMATION = ^BATTERY_INFORMATION;
  138. {$EXTERNALSYM PBATTERY_INFORMATION}
  139. TBatteryInformation = BATTERY_INFORMATION;
  140. PBatteryInformation = PBATTERY_INFORMATION;
  141. //
  142. // BATTERY_INFORMATION.Capabilities flags
  143. //
  144. const
  145. BATTERY_SYSTEM_BATTERY = DWORD($80000000);
  146. {$EXTERNALSYM BATTERY_SYSTEM_BATTERY}
  147. BATTERY_CAPACITY_RELATIVE = $40000000;
  148. {$EXTERNALSYM BATTERY_CAPACITY_RELATIVE}
  149. BATTERY_IS_SHORT_TERM = $20000000;
  150. {$EXTERNALSYM BATTERY_IS_SHORT_TERM}
  151. BATTERY_SET_CHARGE_SUPPORTED = $00000001;
  152. {$EXTERNALSYM BATTERY_SET_CHARGE_SUPPORTED}
  153. BATTERY_SET_DISCHARGE_SUPPORTED = $00000002;
  154. {$EXTERNALSYM BATTERY_SET_DISCHARGE_SUPPORTED}
  155. BATTERY_SET_RESUME_SUPPORTED = $00000004;
  156. {$EXTERNALSYM BATTERY_SET_RESUME_SUPPORTED}
  157. //
  158. // BATTERY_INFORMATION.XXXCapacity constants
  159. //
  160. BATTERY_UNKNOWN_CAPACITY = DWORD($FFFFFFFF);
  161. {$EXTERNALSYM BATTERY_UNKNOWN_CAPACITY}
  162. //
  163. // BatteryEstimatedTime constant
  164. //
  165. BATTERY_UNKNOWN_TIME = DWORD($FFFFFFFF);
  166. {$EXTERNALSYM BATTERY_UNKNOWN_TIME}
  167. //
  168. // Max battery driver BATTERY_QUERY_INFORMATION_LEVEL string storage
  169. // size in bytes.
  170. //
  171. MAX_BATTERY_STRING_SIZE = 128;
  172. {$EXTERNALSYM MAX_BATTERY_STRING_SIZE}
  173. //
  174. // Struct for accessing the packed date format in BatteryManufactureDate.
  175. //
  176. type
  177. _BATTERY_MANUFACTURE_DATE = record
  178. Day: UCHAR;
  179. Month: UCHAR;
  180. Year: USHORT;
  181. end;
  182. {$EXTERNALSYM _BATTERY_MANUFACTURE_DATE}
  183. BATTERY_MANUFACTURE_DATE = _BATTERY_MANUFACTURE_DATE;
  184. {$EXTERNALSYM BATTERY_MANUFACTURE_DATE}
  185. PBATTERY_MANUFACTURE_DATE = ^BATTERY_MANUFACTURE_DATE;
  186. {$EXTERNALSYM PBATTERY_MANUFACTURE_DATE}
  187. TBatteryManufactureDate = BATTERY_MANUFACTURE_DATE;
  188. PBatteryManufactureDate = PBATTERY_MANUFACTURE_DATE;
  189. //
  190. // IOCTL_BATTERY_SET_INFORMATION
  191. //
  192. const
  193. IOCTL_BATTERY_SET_INFORMATION = (FILE_DEVICE_BATTERY shl 16) or (FILE_WRITE_ACCESS shl 14) or ($12 shl 2) or METHOD_BUFFERED;
  194. {$EXTERNALSYM IOCTL_BATTERY_SET_INFORMATION}
  195. type
  196. BATTERY_SET_INFORMATION_LEVEL = (
  197. BatteryCriticalBias,
  198. BatteryCharge,
  199. BatteryDischarge);
  200. {$EXTERNALSYM BATTERY_SET_INFORMATION_LEVEL}
  201. TBatterySetInformationLevel = BATTERY_SET_INFORMATION_LEVEL;
  202. _BATTERY_SET_INFORMATION = record
  203. BatteryTag: ULONG;
  204. InformationLevel: BATTERY_SET_INFORMATION_LEVEL;
  205. Buffer: array [0..0] of UCHAR;
  206. end;
  207. {$EXTERNALSYM _BATTERY_SET_INFORMATION}
  208. BATTERY_SET_INFORMATION = _BATTERY_SET_INFORMATION;
  209. {$EXTERNALSYM BATTERY_SET_INFORMATION}
  210. PBATTERY_SET_INFORMATION = ^BATTERY_SET_INFORMATION;
  211. {$EXTERNALSYM PBATTERY_SET_INFORMATION}
  212. TBatterySetInformation = BATTERY_SET_INFORMATION;
  213. PBatterySetInformation = PBATTERY_SET_INFORMATION;
  214. //
  215. // IOCTL_BATTERY_QUERY_STATUS
  216. //
  217. const
  218. IOCTL_BATTERY_QUERY_STATUS = (FILE_DEVICE_BATTERY shl 16) or (FILE_READ_ACCESS shl 14) or ($13 shl 2) or METHOD_BUFFERED;
  219. {$EXTERNALSYM IOCTL_BATTERY_QUERY_STATUS}
  220. //
  221. // Structure of input buffer to IOCTL_BATTERY_QUERY_STATUS
  222. //
  223. type
  224. _BATTERY_WAIT_STATUS = record
  225. BatteryTag: ULONG;
  226. Timeout: ULONG;
  227. PowerState: ULONG;
  228. LowCapacity: ULONG;
  229. HighCapacity: ULONG;
  230. end;
  231. {$EXTERNALSYM _BATTERY_WAIT_STATUS}
  232. BATTERY_WAIT_STATUS = _BATTERY_WAIT_STATUS;
  233. {$EXTERNALSYM BATTERY_WAIT_STATUS}
  234. PBATTERY_WAIT_STATUS = ^BATTERY_WAIT_STATUS;
  235. {$EXTERNALSYM PBATTERY_WAIT_STATUS}
  236. TBatteryWaitStatus = BATTERY_WAIT_STATUS;
  237. PBatteryWaitStatus = PBATTERY_WAIT_STATUS;
  238. //
  239. // Structure of output buffer from IOCTL_BATTERY_QUERY_STATUS
  240. //
  241. _BATTERY_STATUS = record
  242. PowerState: ULONG;
  243. Capacity: ULONG;
  244. Voltage: ULONG;
  245. Rate: LONG;
  246. end;
  247. {$EXTERNALSYM _BATTERY_STATUS}
  248. BATTERY_STATUS = _BATTERY_STATUS;
  249. {$EXTERNALSYM BATTERY_STATUS}
  250. PBATTERY_STATUS = ^BATTERY_STATUS;
  251. {$EXTERNALSYM PBATTERY_STATUS}
  252. TBatteryStatus = BATTERY_STATUS;
  253. PBatteryStatus = PBATTERY_STATUS;
  254. //
  255. // BATTERY_STATUS.PowerState flags
  256. //
  257. const
  258. BATTERY_POWER_ON_LINE = $00000001;
  259. {$EXTERNALSYM BATTERY_POWER_ON_LINE}
  260. BATTERY_DISCHARGING = $00000002;
  261. {$EXTERNALSYM BATTERY_DISCHARGING}
  262. BATTERY_CHARGING = $00000004;
  263. {$EXTERNALSYM BATTERY_CHARGING}
  264. BATTERY_CRITICAL = $00000008;
  265. {$EXTERNALSYM BATTERY_CRITICAL}
  266. //
  267. // BATTERY_STATUS Constant
  268. // BATTERY_UNKNOWN_CAPACITY defined above for IOCTL_BATTERY_QUERY_INFORMATION
  269. //
  270. BATTERY_UNKNOWN_VOLTAGE = DWORD($FFFFFFFF);
  271. {$EXTERNALSYM BATTERY_UNKNOWN_VOLTAGE}
  272. BATTERY_UNKNOWN_RATE = DWORD($80000000);
  273. {$EXTERNALSYM BATTERY_UNKNOWN_RATE}
  274. // mvb remainder of header file is kernel mode only
  275. implementation
  276. end.