aboutsummaryrefslogtreecommitdiff
path: root/x86_64-w64-mingw32/include/poclass.h
blob: d56bbd9e39ac976150001d34c2caedc0c326a067 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
/**
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#include <winapifamily.h>
#include <devpropdef.h>

DEFINE_DEVPROPKEY(PROCESSOR_NUMBER_PKEY,0x5724c81d,0xd5af,0x4c1f,0xa1,0x03,0xa0,0x6e,0x28,0xf2,0x04,0xc6,1);

DEFINE_GUID(GUID_DEVICE_BATTERY,0x72631e54,0x78A4,0x11d0,0xbc,0xf7,0x00,0xaa,0x00,0xb7,0xb3,0x2a);
DEFINE_GUID(GUID_DEVICE_APPLICATIONLAUNCH_BUTTON,0x629758ee,0x986e,0x4d9e,0x8e,0x47,0xde,0x27,0xf8,0xab,0x05,0x4d);
DEFINE_GUID(GUID_DEVICE_SYS_BUTTON,0x4AFA3D53,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
DEFINE_GUID(GUID_DEVICE_LID,0x4AFA3D52,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE,0x4AFA3D51,0x74A7,0x11d0,0xbe,0x5e,0x00,0xA0,0xC9,0x06,0x28,0x57);
DEFINE_GUID(GUID_DEVICE_PROCESSOR,0x97fadb10,0x4e33,0x40ae,0x35,0x9c,0x8b,0xef,0x02,0x9d,0xbd,0xd0);
DEFINE_GUID(GUID_DEVICE_MEMORY,0x3fd0f03d,0x92e0,0x45fb,0xb7,0x5c,0x5e,0xd8,0xff,0xb0,0x10,0x21);
DEFINE_GUID(GUID_DEVICE_ACPI_TIME,0x97f99bf6,0x4497,0x4f18,0xbb,0x22,0x4b,0x9f,0xb2,0xfb,0xef,0x9c);
DEFINE_GUID(GUID_DEVICE_MESSAGE_INDICATOR,0xcd48a365,0xfa94,0x4ce2,0xa2,0x32,0xa1,0xb7,0x64,0xe5,0xd8,0xb4);
DEFINE_GUID(GUID_CLASS_INPUT,0x4d1e55b2,0xf16f,0x11cf,0x88,0xcb,0x00,0x11,0x11,0x00,0x00,0x30);

#ifndef _POCLASS_
#define _POCLASS_

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

#define BATTERY_UNKNOWN_CAPACITY 0xffffffff
#define UNKNOWN_CAPACITY BATTERY_UNKNOWN_CAPACITY

#define BATTERY_SET_CHARGE_SUPPORTED 0x1
#define BATTERY_SET_DISCHARGE_SUPPORTED  0x2
#define BATTERY_SET_CHARGINGSOURCE_SUPPORTED 0x4
#define BATTERY_SET_RESUME_SUPPORTED 0x4
#define BATTERY_SEALED 0x10000000
#define BATTERY_IS_SHORT_TERM 0x20000000
#define BATTERY_CAPACITY_RELATIVE 0x40000000
#define BATTERY_SYSTEM_BATTERY 0x80000000

#define BATTERY_UNKNOWN_TIME 0xffffffff

#define BATTERY_UNKNOWN_CURRENT 0xffffffff
#define UNKNOWN_CURRENT BATTERY_UNKNOWN_CURRENT

#define BATTERY_UNKNOWN_VOLTAGE 0xffffffff
#define BATTERY_UNKNOWN_RATE 0x80000000
#define UNKNOWN_RATE BATTERY_UNKNOWN_RATE
#define UNKNOWN_VOLTAGE BATTERY_UNKNOWN_VOLTAGE

#define BATTERY_POWER_ON_LINE 0x1
#define BATTERY_DISCHARGING 0x2
#define BATTERY_CHARGING 0x4
#define BATTERY_CRITICAL 0x8

#define BATTERY_TAG_INVALID 0

#define ACTIVE_COOLING 0x0
#define PASSIVE_COOLING 0x1

#define SYS_BUTTON_POWER 0x1
#define SYS_BUTTON_SLEEP 0x2
#define SYS_BUTTON_LID   0x4
#define SYS_BUTTON_WAKE  0x80000000

#define SYS_BUTTON_LID_STATE_MASK 0x30000
#define SYS_BUTTON_LID_OPEN 0x10000
#define SYS_BUTTON_LID_CLOSED 0x20000
#define SYS_BUTTON_LID_INITIAL 0x40000
#define SYS_BUTTON_LID_CHANGED 0x80000

#define PROCESSOR_PCC_COMMAND_GET_AVERAGE_FREQUENCY 0x0
#define PROCESSOR_PCC_COMMAND_SET_DESIRED_FREQUENCY 0x1

#define ACPI_TIME_ADJUST_DAYLIGHT 0x1
#define ACPI_TIME_IN_DAYLIGHT 0x2
#define ACPI_TIME_ZONE_UNKNOWN 0x7FF

#define PROCESSOR_PCC_INTERFACE_STANDARD_VERSION 1

#define THERMAL_COOLING_INTERFACE_VERSION 1

#define THERMAL_DEVICE_INTERFACE_VERSION 1

#define MAX_BATTERY_STRING_SIZE 128
#define MAX_ACTIVE_COOLING_LEVELS 10

#define IOCTL_SET_SYS_MESSAGE_INDICATOR CTL_CODE(FILE_DEVICE_BATTERY,0x70,METHOD_BUFFERED,FILE_WRITE_ACCESS)

#define IOCTL_SET_WAKE_ALARM_VALUE CTL_CODE(FILE_DEVICE_BATTERY,0x80,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_SET_WAKE_ALARM_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x81,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_GET_WAKE_ALARM_VALUE CTL_CODE(FILE_DEVICE_BATTERY,0x82,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_GET_WAKE_ALARM_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x83,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)

#define IOCTL_ACPI_GET_REAL_TIME CTL_CODE(FILE_DEVICE_BATTERY,0x84,METHOD_BUFFERED,FILE_READ_DATA)
#define IOCTL_ACPI_SET_REAL_TIME CTL_CODE(FILE_DEVICE_BATTERY,0x85,METHOD_BUFFERED,FILE_WRITE_ACCESS)

#define IOCTL_BATTERY_QUERY_TAG CTL_CODE(FILE_DEVICE_BATTERY,0x10,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_BATTERY_QUERY_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x11,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_BATTERY_SET_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x12,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_BATTERY_QUERY_STATUS CTL_CODE(FILE_DEVICE_BATTERY,0x13,METHOD_BUFFERED,FILE_READ_ACCESS)

#define IOCTL_THERMAL_QUERY_INFORMATION CTL_CODE(FILE_DEVICE_BATTERY,0x20,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_THERMAL_SET_COOLING_POLICY CTL_CODE(FILE_DEVICE_BATTERY,0x21,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_RUN_ACTIVE_COOLING_METHOD CTL_CODE(FILE_DEVICE_BATTERY,0x22,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_THERMAL_SET_PASSIVE_LIMIT CTL_CODE(FILE_DEVICE_BATTERY,0x23,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define IOCTL_THERMAL_READ_TEMPERATURE CTL_CODE(FILE_DEVICE_BATTERY,0x24,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_QUERY_LID CTL_CODE(FILE_DEVICE_BATTERY,0x30,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_NOTIFY_SWITCH_EVENT CTL_CODE(FILE_DEVICE_BATTERY,0x40,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_GET_SYS_BUTTON_CAPS CTL_CODE(FILE_DEVICE_BATTERY,0x50,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_GET_SYS_BUTTON_EVENT CTL_CODE(FILE_DEVICE_BATTERY,0x51,METHOD_BUFFERED,FILE_READ_ACCESS)

#define IOCTL_GET_PROCESSOR_OBJ_INFO \
        CTL_CODE(FILE_DEVICE_BATTERY,0x60,METHOD_BUFFERED,FILE_READ_ACCESS)

typedef enum {
  BatteryInformation, BatteryGranularityInformation, BatteryTemperature, BatteryEstimatedTime,
  BatteryDeviceName, BatteryManufactureDate, BatteryManufactureName, BatteryUniqueID,
  BatterySerialNumber
} BATTERY_QUERY_INFORMATION_LEVEL;

typedef enum {
  BatteryCriticalBias, BatteryCharge, BatteryDischarge, BatteryChargingSource
} BATTERY_SET_INFORMATION_LEVEL;

typedef enum _BATTERY_CHARGING_SOURCE_TYPE {
  BatteryChargingSourceType_None, BatteryChargingSourceType_AC,
  BatteryChargingSourceType_USB, BatteryChargingSourceType_Wireless
} BATTERY_CHARGING_SOURCE_TYPE, *PBATTERY_CHARGING_SOURCE_TYPE;

typedef struct _BATTERY_QUERY_INFORMATION {
  ULONG BatteryTag;
  BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
  ULONG AtRate;
} BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_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, *PBATTERY_INFORMATION;

typedef struct _BATTERY_CHARGING_SOURCE {
  BATTERY_CHARGING_SOURCE_TYPE Type;
  ULONG MaxCurrent;
} BATTERY_CHARGING_SOURCE, *PBATTERY_CHARGING_SOURCE;

typedef struct _BATTERY_SET_INFORMATION {
  ULONG BatteryTag;
  BATTERY_SET_INFORMATION_LEVEL InformationLevel;
  UCHAR Buffer[1];
} BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;

typedef struct _BATTERY_WAIT_STATUS {
  ULONG BatteryTag;
  ULONG Timeout;
  ULONG PowerState;
  ULONG LowCapacity;
  ULONG HighCapacity;
} BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;

typedef struct _BATTERY_STATUS {
  ULONG PowerState;
  ULONG Capacity;
  ULONG Voltage;
  LONG Rate;
} BATTERY_STATUS, *PBATTERY_STATUS;

typedef struct _BATTERY_MANUFACTURE_DATE {
  UCHAR Day;
  UCHAR Month;
  USHORT Year;
} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;

typedef struct _THERMAL_INFORMATION {
  ULONG ThermalStamp;
  ULONG ThermalConstant1;
  ULONG ThermalConstant2;
  KAFFINITY Processors;
  ULONG SamplingPeriod;
  ULONG CurrentTemperature;
  ULONG PassiveTripPoint;
  ULONG CriticalTripPoint;
  UCHAR ActiveTripPointCount;
  ULONG ActiveTripPoint[MAX_ACTIVE_COOLING_LEVELS];
} THERMAL_INFORMATION, *PTHERMAL_INFORMATION;

typedef struct _THERMAL_WAIT_READ {
  ULONG Timeout;
  ULONG LowTemperature;
  ULONG HighTemperature;
} THERMAL_WAIT_READ, *PTHERMAL_WAIT_READ;

typedef struct {
  ULONG PhysicalID;
  ULONG PBlkAddress;
  UCHAR PBlkLength;
} PROCESSOR_OBJECT_INFO, *PPROCESSOR_OBJECT_INFO;

typedef struct {
  ULONG PhysicalID;
  ULONG PBlkAddress;
  UCHAR PBlkLength;
  ULONG InitialApicId;
} PROCESSOR_OBJECT_INFO_EX, *PPROCESSOR_OBJECT_INFO_EX;

#ifndef _WINDOWS_

#include "pshpack1.h"

typedef struct _PCC_HEADER {
  ULONG Signature;
  USHORT HeaderLength;
  UCHAR MajorVersion;
  UCHAR MinorVersion;
  union {
    __MINGW_EXTENSION struct {
      ULONG SciDoorbell : 1;
      ULONG Reserved : 31;
    };
    ULONG AsULong;
  } SupportedFeatures;
  union {
    __MINGW_EXTENSION struct {
      USHORT CommandCode : 8;
      USHORT ReservedZ : 7;
      USHORT SciDoorbell : 1;
    };
    USHORT AsUShort;
  } Command;
  union {
    __MINGW_EXTENSION struct {
      USHORT CommandComplete : 1;
      USHORT SciReceived : 1;
      USHORT Error : 1;
      USHORT Reserved : 13;
    };
    USHORT AsUShort;
  } Status;
  ULONG Latency;
  ULONG MinimumCommandInterval;
  ULONG MaximumCommandInterval;
  ULONG NominalFrequency;
  ULONG MinimumFrequency;
  ULONG MinimumUnthrottledFrequency;
} PCC_HEADER, *PPCC_HEADER;

typedef struct _PCC_INPUT_BUFFER {
  UCHAR ControlEnabled;
  __MINGW_EXTENSION union {
    struct {
      UCHAR ReservedZ[3];
    } GetAverageFrequency;
    struct {
      UCHAR DesiredFrequency;
      UCHAR ReservedZ[2];
    } SetDesiredFrequency;
  };
} PCC_INPUT_BUFFER, *PPCC_INPUT_BUFFER;

typedef union _PCC_OUTPUT_BUFFER {
  struct {
    UCHAR AverageFrequency;
    UCHAR FrequencyLimit;
    UCHAR Reserved[2];
  } GetAverageFrequency;
  struct {
    UCHAR Reserved[4];
  } SetDesiredFrequency;
} PCC_OUTPUT_BUFFER, *PPCC_OUTPUT_BUFFER;

#include "poppack.h"

typedef VOID (*PPROCESSOR_PCC_DOORBELL_CALLBACK)(ULONG Status, ULONG_PTR Context);
typedef NTSTATUS (*PPROCESSOR_PCC_RING_DOORBELL)(UCHAR Command, PPROCESSOR_PCC_DOORBELL_CALLBACK Callback, ULONG_PTR Context);

typedef struct _PROCESSOR_PCC_INTERFACE_STANDARD {
  USHORT Size;
  USHORT Version;
  PVOID Context;
  PINTERFACE_REFERENCE InterfaceReference;
  PINTERFACE_DEREFERENCE InterfaceDereference;
  PPROCESSOR_PCC_RING_DOORBELL PccRingDoorbell;
  PPCC_HEADER PccHeader;
  ULONG PccHeaderLength;
} PROCESSOR_PCC_INTERFACE_STANDARD, *PPROCESSOR_PCC_INTERFACE_STANDARD;

typedef VOID (*PDEVICE_ACTIVE_COOLING)(PVOID Context, BOOLEAN Engaged);
typedef VOID (*PDEVICE_PASSIVE_COOLING)(PVOID Context, ULONG Percentage);

typedef struct _THERMAL_COOLING_INTERFACE {
  USHORT Size;
  USHORT Version;
  PVOID Context;
  PINTERFACE_REFERENCE InterfaceReference;
  PINTERFACE_DEREFERENCE InterfaceDereference;
  ULONG Flags;
  PDEVICE_ACTIVE_COOLING ActiveCooling;
  PDEVICE_PASSIVE_COOLING PassiveCooling;
} THERMAL_COOLING_INTERFACE, *PTHERMAL_COOLING_INTERFACE;

typedef THERMAL_COOLING_INTERFACE THERMAL_DEVICE_INTERFACE;
typedef THERMAL_COOLING_INTERFACE *PTHERMAL_DEVICE_INTERFACE;

typedef enum _THERMAL_DEVICE_INTERFACE_FLAGS {
  ThermalDeviceFlagActiveCooling = 1,
  ThermalDeviceFlagPassiveCooling = 2
} THERMAL_DEVICE_INTERFACE_FLAGS, *PTHERMAL_DEVICE_INTERFACE_FLAGS;

#endif // _WINDOWS_

typedef struct _WAKE_ALARM_INFORMATION {
  ULONG TimerIdentifier;
  ULONG Timeout;
} WAKE_ALARM_INFORMATION, *PWAKE_ALARM_INFORMATION;

typedef struct _ACPI_REAL_TIME {
  UINT16 Year;
  UINT8 Month;
  UINT8 Day;
  UINT8 Hour;
  UINT8 Minute;
  UINT8 Second;
  UINT8 Valid;
  UINT16 Milliseconds;
  INT16 TimeZone;
  UINT8 DayLight;
  UINT8 Reserved1[3];
} ACPI_REAL_TIME, *PACPI_REAL_TIME;

#endif /* WINAPI_PARTITION_DESKTOP.  */

#endif