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