poclass.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #include <winapifamily.h>
  6. #include <devpropdef.h>
  7. DEFINE_DEVPROPKEY(PROCESSOR_NUMBER_PKEY,0x5724c81d,0xd5af,0x4c1f,0xa1,0x03,0xa0,0x6e,0x28,0xf2,0x04,0xc6,1);
  8. DEFINE_GUID(GUID_DEVICE_BATTERY,0x72631e54,0x78A4,0x11d0,0xbc,0xf7,0x00,0xaa,0x00,0xb7,0xb3,0x2a);
  9. DEFINE_GUID(GUID_DEVICE_APPLICATIONLAUNCH_BUTTON,0x629758ee,0x986e,0x4d9e,0x8e,0x47,0xde,0x27,0xf8,0xab,0x05,0x4d);
  10. DEFINE_GUID(GUID_DEVICE_SYS_BUTTON,0x4AFA3D53,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
  11. DEFINE_GUID(GUID_DEVICE_LID,0x4AFA3D52,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
  12. DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE,0x4AFA3D51,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
  13. DEFINE_GUID(GUID_DEVICE_PROCESSOR,0x97fadb10,0x4e33,0x40ae,0x35,0x9c,0x8b,0xef,0x02,0x9d,0xbd,0xd0);
  14. DEFINE_GUID(GUID_DEVICE_MEMORY,0x3fd0f03d,0x92e0,0x45fb,0xb7,0x5c,0x5e,0xd8,0xff,0xb0,0x10,0x21);
  15. DEFINE_GUID(GUID_DEVICE_ACPI_TIME,0x97f99bf6,0x4497,0x4f18,0xbb,0x22,0x4b,0x9f,0xb2,0xfb,0xef,0x9c);
  16. DEFINE_GUID(GUID_DEVICE_MESSAGE_INDICATOR,0xcd48a365,0xfa94,0x4ce2,0xa2,0x32,0xa1,0xb7,0x64,0xe5,0xd8,0xb4);
  17. DEFINE_GUID(GUID_CLASS_INPUT,0x4d1e55b2,0xf16f,0x11cf,0x88,0xcb,0x00,0x11,0x11,0x00,0x00,0x30);
  18. #ifndef _POCLASS_
  19. #define _POCLASS_
  20. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  21. #define BATTERY_UNKNOWN_CAPACITY 0xffffffff
  22. #define UNKNOWN_CAPACITY BATTERY_UNKNOWN_CAPACITY
  23. #define BATTERY_SET_CHARGE_SUPPORTED 0x1
  24. #define BATTERY_SET_DISCHARGE_SUPPORTED 0x2
  25. #define BATTERY_SET_CHARGINGSOURCE_SUPPORTED 0x4
  26. #define BATTERY_SET_RESUME_SUPPORTED 0x4
  27. #define BATTERY_SEALED 0x10000000
  28. #define BATTERY_IS_SHORT_TERM 0x20000000
  29. #define BATTERY_CAPACITY_RELATIVE 0x40000000
  30. #define BATTERY_SYSTEM_BATTERY 0x80000000
  31. #define BATTERY_UNKNOWN_TIME 0xffffffff
  32. #define BATTERY_UNKNOWN_CURRENT 0xffffffff
  33. #define UNKNOWN_CURRENT BATTERY_UNKNOWN_CURRENT
  34. #define BATTERY_UNKNOWN_VOLTAGE 0xffffffff
  35. #define BATTERY_UNKNOWN_RATE 0x80000000
  36. #define UNKNOWN_RATE BATTERY_UNKNOWN_RATE
  37. #define UNKNOWN_VOLTAGE BATTERY_UNKNOWN_VOLTAGE
  38. #define BATTERY_POWER_ON_LINE 0x1
  39. #define BATTERY_DISCHARGING 0x2
  40. #define BATTERY_CHARGING 0x4
  41. #define BATTERY_CRITICAL 0x8
  42. #define BATTERY_TAG_INVALID 0
  43. #define ACTIVE_COOLING 0x0
  44. #define PASSIVE_COOLING 0x1
  45. #define SYS_BUTTON_POWER 0x1
  46. #define SYS_BUTTON_SLEEP 0x2
  47. #define SYS_BUTTON_LID 0x4
  48. #define SYS_BUTTON_WAKE 0x80000000
  49. #define SYS_BUTTON_LID_STATE_MASK 0x30000
  50. #define SYS_BUTTON_LID_OPEN 0x10000
  51. #define SYS_BUTTON_LID_CLOSED 0x20000
  52. #define SYS_BUTTON_LID_INITIAL 0x40000
  53. #define SYS_BUTTON_LID_CHANGED 0x80000
  54. #define PROCESSOR_PCC_COMMAND_GET_AVERAGE_FREQUENCY 0x0
  55. #define PROCESSOR_PCC_COMMAND_SET_DESIRED_FREQUENCY 0x1
  56. #define ACPI_TIME_ADJUST_DAYLIGHT 0x1
  57. #define ACPI_TIME_IN_DAYLIGHT 0x2
  58. #define ACPI_TIME_ZONE_UNKNOWN 0x7FF
  59. #define PROCESSOR_PCC_INTERFACE_STANDARD_VERSION 1
  60. #define THERMAL_COOLING_INTERFACE_VERSION 1
  61. #define THERMAL_DEVICE_INTERFACE_VERSION 1
  62. #define MAX_BATTERY_STRING_SIZE 128
  63. #define MAX_ACTIVE_COOLING_LEVELS 10
  64. #define IOCTL_SET_SYS_MESSAGE_INDICATOR CTL_CODE(FILE_DEVICE_BATTERY,0x70,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  65. #define IOCTL_SET_WAKE_ALARM_VALUE CTL_CODE(FILE_DEVICE_BATTERY,0x80,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  66. #define IOCTL_SET_WAKE_ALARM_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x81,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  67. #define IOCTL_GET_WAKE_ALARM_VALUE CTL_CODE(FILE_DEVICE_BATTERY,0x82,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  68. #define IOCTL_GET_WAKE_ALARM_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x83,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  69. #define IOCTL_ACPI_GET_REAL_TIME CTL_CODE(FILE_DEVICE_BATTERY,0x84,METHOD_BUFFERED,FILE_READ_DATA)
  70. #define IOCTL_ACPI_SET_REAL_TIME CTL_CODE(FILE_DEVICE_BATTERY,0x85,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  71. #define IOCTL_BATTERY_QUERY_TAG CTL_CODE(FILE_DEVICE_BATTERY,0x10,METHOD_BUFFERED,FILE_READ_ACCESS)
  72. #define IOCTL_BATTERY_QUERY_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x11,METHOD_BUFFERED,FILE_READ_ACCESS)
  73. #define IOCTL_BATTERY_SET_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x12,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  74. #define IOCTL_BATTERY_QUERY_STATUS CTL_CODE(FILE_DEVICE_BATTERY,0x13,METHOD_BUFFERED,FILE_READ_ACCESS)
  75. #define IOCTL_THERMAL_QUERY_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x20,METHOD_BUFFERED,FILE_READ_ACCESS)
  76. #define IOCTL_THERMAL_SET_COOLING_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x21,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  77. #define IOCTL_RUN_ACTIVE_COOLING_METHOD CTL_CODE(FILE_DEVICE_BATTERY,0x22,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  78. #define IOCTL_THERMAL_SET_PASSIVE_LIMIT CTL_CODE(FILE_DEVICE_BATTERY,0x23,METHOD_BUFFERED,FILE_WRITE_ACCESS)
  79. #define IOCTL_THERMAL_READ_TEMPERATURE CTL_CODE(FILE_DEVICE_BATTERY,0x24,METHOD_BUFFERED,FILE_READ_ACCESS)
  80. #define IOCTL_QUERY_LID CTL_CODE(FILE_DEVICE_BATTERY,0x30,METHOD_BUFFERED,FILE_READ_ACCESS)
  81. #define IOCTL_NOTIFY_SWITCH_EVENT CTL_CODE(FILE_DEVICE_BATTERY,0x40,METHOD_BUFFERED,FILE_READ_ACCESS)
  82. #define IOCTL_GET_SYS_BUTTON_CAPS CTL_CODE(FILE_DEVICE_BATTERY,0x50,METHOD_BUFFERED,FILE_READ_ACCESS)
  83. #define IOCTL_GET_SYS_BUTTON_EVENT CTL_CODE(FILE_DEVICE_BATTERY,0x51,METHOD_BUFFERED,FILE_READ_ACCESS)
  84. #define IOCTL_GET_PROCESSOR_OBJ_INFO \
  85. CTL_CODE(FILE_DEVICE_BATTERY,0x60,METHOD_BUFFERED,FILE_READ_ACCESS)
  86. typedef enum {
  87. BatteryInformation, BatteryGranularityInformation, BatteryTemperature, BatteryEstimatedTime,
  88. BatteryDeviceName, BatteryManufactureDate, BatteryManufactureName, BatteryUniqueID,
  89. BatterySerialNumber
  90. } BATTERY_QUERY_INFORMATION_LEVEL;
  91. typedef enum {
  92. BatteryCriticalBias, BatteryCharge, BatteryDischarge, BatteryChargingSource
  93. } BATTERY_SET_INFORMATION_LEVEL;
  94. typedef enum _BATTERY_CHARGING_SOURCE_TYPE {
  95. BatteryChargingSourceType_None, BatteryChargingSourceType_AC,
  96. BatteryChargingSourceType_USB, BatteryChargingSourceType_Wireless
  97. } BATTERY_CHARGING_SOURCE_TYPE, *PBATTERY_CHARGING_SOURCE_TYPE;
  98. typedef struct _BATTERY_QUERY_INFORMATION {
  99. ULONG BatteryTag;
  100. BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
  101. ULONG AtRate;
  102. } BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION;
  103. typedef struct _BATTERY_INFORMATION {
  104. ULONG Capabilities;
  105. UCHAR Technology;
  106. UCHAR Reserved[3];
  107. UCHAR Chemistry[4];
  108. ULONG DesignedCapacity;
  109. ULONG FullChargedCapacity;
  110. ULONG DefaultAlert1;
  111. ULONG DefaultAlert2;
  112. ULONG CriticalBias;
  113. ULONG CycleCount;
  114. } BATTERY_INFORMATION, *PBATTERY_INFORMATION;
  115. typedef struct _BATTERY_CHARGING_SOURCE {
  116. BATTERY_CHARGING_SOURCE_TYPE Type;
  117. ULONG MaxCurrent;
  118. } BATTERY_CHARGING_SOURCE, *PBATTERY_CHARGING_SOURCE;
  119. typedef struct _BATTERY_SET_INFORMATION {
  120. ULONG BatteryTag;
  121. BATTERY_SET_INFORMATION_LEVEL InformationLevel;
  122. UCHAR Buffer[1];
  123. } BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;
  124. typedef struct _BATTERY_WAIT_STATUS {
  125. ULONG BatteryTag;
  126. ULONG Timeout;
  127. ULONG PowerState;
  128. ULONG LowCapacity;
  129. ULONG HighCapacity;
  130. } BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;
  131. typedef struct _BATTERY_STATUS {
  132. ULONG PowerState;
  133. ULONG Capacity;
  134. ULONG Voltage;
  135. LONG Rate;
  136. } BATTERY_STATUS, *PBATTERY_STATUS;
  137. typedef struct _BATTERY_MANUFACTURE_DATE {
  138. UCHAR Day;
  139. UCHAR Month;
  140. USHORT Year;
  141. } BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
  142. typedef struct _THERMAL_INFORMATION {
  143. ULONG ThermalStamp;
  144. ULONG ThermalConstant1;
  145. ULONG ThermalConstant2;
  146. KAFFINITY Processors;
  147. ULONG SamplingPeriod;
  148. ULONG CurrentTemperature;
  149. ULONG PassiveTripPoint;
  150. ULONG CriticalTripPoint;
  151. UCHAR ActiveTripPointCount;
  152. ULONG ActiveTripPoint[MAX_ACTIVE_COOLING_LEVELS];
  153. } THERMAL_INFORMATION, *PTHERMAL_INFORMATION;
  154. typedef struct _THERMAL_WAIT_READ {
  155. ULONG Timeout;
  156. ULONG LowTemperature;
  157. ULONG HighTemperature;
  158. } THERMAL_WAIT_READ, *PTHERMAL_WAIT_READ;
  159. typedef struct {
  160. ULONG PhysicalID;
  161. ULONG PBlkAddress;
  162. UCHAR PBlkLength;
  163. } PROCESSOR_OBJECT_INFO, *PPROCESSOR_OBJECT_INFO;
  164. typedef struct {
  165. ULONG PhysicalID;
  166. ULONG PBlkAddress;
  167. UCHAR PBlkLength;
  168. ULONG InitialApicId;
  169. } PROCESSOR_OBJECT_INFO_EX, *PPROCESSOR_OBJECT_INFO_EX;
  170. #ifndef _WINDOWS_
  171. #include "pshpack1.h"
  172. typedef struct _PCC_HEADER {
  173. ULONG Signature;
  174. USHORT HeaderLength;
  175. UCHAR MajorVersion;
  176. UCHAR MinorVersion;
  177. union {
  178. __MINGW_EXTENSION struct {
  179. ULONG SciDoorbell : 1;
  180. ULONG Reserved : 31;
  181. };
  182. ULONG AsULong;
  183. } SupportedFeatures;
  184. union {
  185. __MINGW_EXTENSION struct {
  186. USHORT CommandCode : 8;
  187. USHORT ReservedZ : 7;
  188. USHORT SciDoorbell : 1;
  189. };
  190. USHORT AsUShort;
  191. } Command;
  192. union {
  193. __MINGW_EXTENSION struct {
  194. USHORT CommandComplete : 1;
  195. USHORT SciReceived : 1;
  196. USHORT Error : 1;
  197. USHORT Reserved : 13;
  198. };
  199. USHORT AsUShort;
  200. } Status;
  201. ULONG Latency;
  202. ULONG MinimumCommandInterval;
  203. ULONG MaximumCommandInterval;
  204. ULONG NominalFrequency;
  205. ULONG MinimumFrequency;
  206. ULONG MinimumUnthrottledFrequency;
  207. } PCC_HEADER, *PPCC_HEADER;
  208. typedef struct _PCC_INPUT_BUFFER {
  209. UCHAR ControlEnabled;
  210. __MINGW_EXTENSION union {
  211. struct {
  212. UCHAR ReservedZ[3];
  213. } GetAverageFrequency;
  214. struct {
  215. UCHAR DesiredFrequency;
  216. UCHAR ReservedZ[2];
  217. } SetDesiredFrequency;
  218. };
  219. } PCC_INPUT_BUFFER, *PPCC_INPUT_BUFFER;
  220. typedef union _PCC_OUTPUT_BUFFER {
  221. struct {
  222. UCHAR AverageFrequency;
  223. UCHAR FrequencyLimit;
  224. UCHAR Reserved[2];
  225. } GetAverageFrequency;
  226. struct {
  227. UCHAR Reserved[4];
  228. } SetDesiredFrequency;
  229. } PCC_OUTPUT_BUFFER, *PPCC_OUTPUT_BUFFER;
  230. #include "poppack.h"
  231. typedef VOID (*PPROCESSOR_PCC_DOORBELL_CALLBACK)(ULONG Status, ULONG_PTR Context);
  232. typedef NTSTATUS (*PPROCESSOR_PCC_RING_DOORBELL)(UCHAR Command, PPROCESSOR_PCC_DOORBELL_CALLBACK Callback, ULONG_PTR Context);
  233. typedef struct _PROCESSOR_PCC_INTERFACE_STANDARD {
  234. USHORT Size;
  235. USHORT Version;
  236. PVOID Context;
  237. PINTERFACE_REFERENCE InterfaceReference;
  238. PINTERFACE_DEREFERENCE InterfaceDereference;
  239. PPROCESSOR_PCC_RING_DOORBELL PccRingDoorbell;
  240. PPCC_HEADER PccHeader;
  241. ULONG PccHeaderLength;
  242. } PROCESSOR_PCC_INTERFACE_STANDARD, *PPROCESSOR_PCC_INTERFACE_STANDARD;
  243. typedef VOID (*PDEVICE_ACTIVE_COOLING)(PVOID Context, BOOLEAN Engaged);
  244. typedef VOID (*PDEVICE_PASSIVE_COOLING)(PVOID Context, ULONG Percentage);
  245. typedef struct _THERMAL_COOLING_INTERFACE {
  246. USHORT Size;
  247. USHORT Version;
  248. PVOID Context;
  249. PINTERFACE_REFERENCE InterfaceReference;
  250. PINTERFACE_DEREFERENCE InterfaceDereference;
  251. ULONG Flags;
  252. PDEVICE_ACTIVE_COOLING ActiveCooling;
  253. PDEVICE_PASSIVE_COOLING PassiveCooling;
  254. } THERMAL_COOLING_INTERFACE, *PTHERMAL_COOLING_INTERFACE;
  255. typedef THERMAL_COOLING_INTERFACE THERMAL_DEVICE_INTERFACE;
  256. typedef THERMAL_COOLING_INTERFACE *PTHERMAL_DEVICE_INTERFACE;
  257. typedef enum _THERMAL_DEVICE_INTERFACE_FLAGS {
  258. ThermalDeviceFlagActiveCooling = 1,
  259. ThermalDeviceFlagPassiveCooling = 2
  260. } THERMAL_DEVICE_INTERFACE_FLAGS, *PTHERMAL_DEVICE_INTERFACE_FLAGS;
  261. #endif // _WINDOWS_
  262. typedef struct _WAKE_ALARM_INFORMATION {
  263. ULONG TimerIdentifier;
  264. ULONG Timeout;
  265. } WAKE_ALARM_INFORMATION, *PWAKE_ALARM_INFORMATION;
  266. typedef struct _ACPI_REAL_TIME {
  267. UINT16 Year;
  268. UINT8 Month;
  269. UINT8 Day;
  270. UINT8 Hour;
  271. UINT8 Minute;
  272. UINT8 Second;
  273. UINT8 Valid;
  274. UINT16 Milliseconds;
  275. INT16 TimeZone;
  276. UINT8 DayLight;
  277. UINT8 Reserved1[3];
  278. } ACPI_REAL_TIME, *PACPI_REAL_TIME;
  279. #endif /* WINAPI_PARTITION_DESKTOP. */
  280. #endif