master
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#ifndef _POWRPROF_H_
8#define _POWRPROF_H_
9
10#include <powerbase.h>
11#include <powersetting.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17 typedef struct _GLOBAL_MACHINE_POWER_POLICY{
18 ULONG Revision;
19 SYSTEM_POWER_STATE LidOpenWakeAc;
20 SYSTEM_POWER_STATE LidOpenWakeDc;
21 ULONG BroadcastCapacityResolution;
22 } GLOBAL_MACHINE_POWER_POLICY,*PGLOBAL_MACHINE_POWER_POLICY;
23
24 typedef struct _GLOBAL_USER_POWER_POLICY{
25 ULONG Revision;
26 POWER_ACTION_POLICY PowerButtonAc;
27 POWER_ACTION_POLICY PowerButtonDc;
28 POWER_ACTION_POLICY SleepButtonAc;
29 POWER_ACTION_POLICY SleepButtonDc;
30 POWER_ACTION_POLICY LidCloseAc;
31 POWER_ACTION_POLICY LidCloseDc;
32 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
33 ULONG GlobalFlags;
34 } GLOBAL_USER_POWER_POLICY,*PGLOBAL_USER_POWER_POLICY;
35
36 typedef struct _GLOBAL_POWER_POLICY{
37 GLOBAL_USER_POWER_POLICY user;
38 GLOBAL_MACHINE_POWER_POLICY mach;
39 } GLOBAL_POWER_POLICY,*PGLOBAL_POWER_POLICY;
40
41 typedef struct _MACHINE_POWER_POLICY{
42 ULONG Revision;
43 SYSTEM_POWER_STATE MinSleepAc;
44 SYSTEM_POWER_STATE MinSleepDc;
45 SYSTEM_POWER_STATE ReducedLatencySleepAc;
46 SYSTEM_POWER_STATE ReducedLatencySleepDc;
47 ULONG DozeTimeoutAc;
48 ULONG DozeTimeoutDc;
49 ULONG DozeS4TimeoutAc;
50 ULONG DozeS4TimeoutDc;
51 UCHAR MinThrottleAc;
52 UCHAR MinThrottleDc;
53 UCHAR pad1[2];
54 POWER_ACTION_POLICY OverThrottledAc;
55 POWER_ACTION_POLICY OverThrottledDc;
56 } MACHINE_POWER_POLICY,*PMACHINE_POWER_POLICY;
57
58 typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
59 ULONG Revision;
60 PROCESSOR_POWER_POLICY ProcessorPolicyAc;
61 PROCESSOR_POWER_POLICY ProcessorPolicyDc;
62 } MACHINE_PROCESSOR_POWER_POLICY,*PMACHINE_PROCESSOR_POWER_POLICY;
63
64 typedef struct _USER_POWER_POLICY{
65 ULONG Revision;
66 POWER_ACTION_POLICY IdleAc;
67 POWER_ACTION_POLICY IdleDc;
68 ULONG IdleTimeoutAc;
69 ULONG IdleTimeoutDc;
70 UCHAR IdleSensitivityAc;
71 UCHAR IdleSensitivityDc;
72 UCHAR ThrottlePolicyAc;
73 UCHAR ThrottlePolicyDc;
74 SYSTEM_POWER_STATE MaxSleepAc;
75 SYSTEM_POWER_STATE MaxSleepDc;
76 ULONG Reserved[2];
77 ULONG VideoTimeoutAc;
78 ULONG VideoTimeoutDc;
79 ULONG SpindownTimeoutAc;
80 ULONG SpindownTimeoutDc;
81 BOOLEAN OptimizeForPowerAc;
82 BOOLEAN OptimizeForPowerDc;
83 UCHAR FanThrottleToleranceAc;
84 UCHAR FanThrottleToleranceDc;
85 UCHAR ForcedThrottleAc;
86 UCHAR ForcedThrottleDc;
87 } USER_POWER_POLICY,*PUSER_POWER_POLICY;
88
89 typedef struct _POWER_POLICY{
90 USER_POWER_POLICY user;
91 MACHINE_POWER_POLICY mach;
92 } POWER_POLICY,*PPOWER_POLICY;
93
94#define EnableSysTrayBatteryMeter 0x01
95#define EnableMultiBatteryDisplay 0x02
96#define EnablePasswordLogon 0x04
97#define EnableWakeOnRing 0x08
98#define EnableVideoDimDisplay 0x10
99
100#define NEWSCHEME (UINT)-1
101
102 typedef BOOLEAN (CALLBACK *PWRSCHEMESENUMPROC)(UINT,DWORD,LPTSTR,DWORD,LPTSTR,PPOWER_POLICY,LPARAM);
103 typedef BOOLEAN (CALLBACK *PFNNTINITIATEPWRACTION)(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
104
105 BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT,PUINT);
106 BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC,LPARAM);
107 BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
108 BOOLEAN WINAPI ReadPwrScheme(UINT,PPOWER_POLICY);
109 BOOLEAN WINAPI WritePwrScheme(PUINT,LPTSTR,LPTSTR,PPOWER_POLICY);
110 BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
111 BOOLEAN WINAPI DeletePwrScheme(UINT);
112 BOOLEAN WINAPI GetActivePwrScheme(PUINT);
113 BOOLEAN WINAPI SetActivePwrScheme(UINT,PGLOBAL_POWER_POLICY,PPOWER_POLICY);
114 BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
115 BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
116 BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
117 BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
118 BOOLEAN WINAPI SetSuspendState(BOOLEAN,BOOLEAN,BOOLEAN);
119 BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY,PPOWER_POLICY);
120 BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
121 BOOLEAN WINAPI ReadProcessorPwrScheme(UINT,PMACHINE_PROCESSOR_POWER_POLICY);
122 BOOLEAN WINAPI WriteProcessorPwrScheme(UINT,PMACHINE_PROCESSOR_POWER_POLICY);
123 BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY,PPOWER_POLICY);
124
125#if (_WIN32_WINNT >= 0x0600)
126#define DEVICEPOWER_HARDWAREID 0x80000000
127#define DEVICEPOWER_FILTER_DEVICES_PRESENT 0x20000000
128#define DEVICEPOWER_AND_OPERATION 0x40000000
129#define DEVICEPOWER_FILTER_WAKEENABLED 0x08000000
130#define DEVICEPOWER_FILTER_ON_NAME 0x02000000
131
132#define PDCAP_D0_SUPPORTED 0x00000001
133#define PDCAP_D1_SUPPORTED 0x00000002
134#define PDCAP_D2_SUPPORTED 0x00000004
135#define PDCAP_D3_SUPPORTED 0x00000008
136#define PDCAP_S0_SUPPORTED 0x00010000
137#define PDCAP_S1_SUPPORTED 0x00020000
138#define PDCAP_S2_SUPPORTED 0x00040000
139#define PDCAP_S3_SUPPORTED 0x00080000
140#define PDCAP_S4_SUPPORTED 0x01000000
141#define PDCAP_S5_SUPPORTED 0x02000000
142#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
143#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
144#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
145#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
146#define PDCAP_WAKE_FROM_S0_SUPPORTED 0x00100000
147#define PDCAP_WAKE_FROM_S1_SUPPORTED 0x00200000
148#define PDCAP_WAKE_FROM_S2_SUPPORTED 0x00400000
149#define PDCAP_WAKE_FROM_S3_SUPPORTED 0x00800000
150#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
151
152#define DEVICEPOWER_SET_WAKEENABLED 0x00000001
153#define DEVICEPOWER_CLEAR_WAKEENABLED 0x00000002
154
155typedef enum _POWER_DATA_ACCESSOR {
156 ACCESS_AC_POWER_SETTING_INDEX = 0, // 0x0
157 ACCESS_DC_POWER_SETTING_INDEX = 1, // 0x1
158 ACCESS_SCHEME = 16, // 0x10
159 ACCESS_SUBGROUP = 17, // 0x11
160 ACCESS_INDIVIDUAL_SETTING = 18, // 0x12
161 ACCESS_ACTIVE_SCHEME = 19, // 0x13
162 ACCESS_CREATE_SCHEME = 20 // 0x14
163} POWER_DATA_ACCESSOR, *PPOWER_DATA_ACCESSOR;
164
165BOOLEAN WINAPI DevicePowerClose(void);
166BOOLEAN WINAPI DevicePowerEnumDevices(
167 ULONG QueryIndex,
168 ULONG QueryInterpretationFlags,
169 ULONG QueryFlags,
170 PBYTE pReturnBuffer,
171 PULONG pBufferSize
172);
173
174BOOLEAN WINAPI DevicePowerOpen(
175 ULONG Flags
176);
177
178DWORD WINAPI DevicePowerSetDeviceState(
179 LPCWSTR DeviceDescription,
180 ULONG SetFlags,
181 LPCVOID SetData
182);
183
184DWORD WINAPI PowerCanRestoreIndividualDefaultPowerScheme(
185 const GUID *SchemeGuid
186);
187
188DWORD WINAPI PowerCreatePossibleSetting(
189 HKEY RootSystemPowerKey,
190 const GUID *SubGroupOfPowerSettingsGuid,
191 const GUID *PowerSettingGuid,
192 ULONG PossibleSettingIndex
193);
194
195DWORD WINAPI PowerCreateSetting(
196 HKEY RootSystemPowerKey,
197 const GUID *SubGroupOfPowerSettingsGuid,
198 const GUID *PowerSettingGuid
199);
200
201DWORD WINAPI PowerDeleteScheme(
202 HKEY RootPowerKey,
203 const GUID *SchemeGuid
204);
205
206POWER_PLATFORM_ROLE WINAPI PowerDeterminePlatformRole(void);
207
208DWORD WINAPI PowerDuplicateScheme(
209 HKEY RootPowerKey,
210 const GUID *SourceSchemeGuid,
211 GUID **DestinationSchemeGuid
212);
213
214DWORD WINAPI PowerEnumerate(
215 HKEY RootPowerKey,
216 const GUID *SchemeGuid,
217 const GUID *SubGroupOfPowerSettingsGuid,
218 POWER_DATA_ACCESSOR AccessFlags,
219 ULONG Index,
220 UCHAR *Buffer,
221 DWORD *BufferSize
222);
223
224DWORD WINAPI PowerImportPowerScheme(
225 HKEY RootPowerKey,
226 LPCWSTR ImportFileNamePath,
227 GUID **DestinationSchemeGuid
228);
229
230DWORD WINAPI PowerReadACDefaultIndex(
231 HKEY RootPowerKey,
232 const GUID *SchemePersonalityGuid,
233 const GUID *SubGroupOfPowerSettingsGuid,
234 const GUID *PowerSettingGuid,
235 LPDWORD AcDefaultIndex
236);
237
238DWORD WINAPI PowerReadACValueIndex(
239 HKEY RootPowerKey,
240 const GUID *SchemeGuid,
241 const GUID *SubGroupOfPowerSettingsGuid,
242 const GUID *PowerSettingGuid,
243 LPDWORD AcValueIndex
244);
245
246DWORD WINAPI PowerReadDCDefaultIndex(
247 HKEY RootPowerKey,
248 const GUID *SchemePersonalityGuid,
249 const GUID *SubGroupOfPowerSettingsGuid,
250 const GUID *PowerSettingGuid,
251 LPDWORD DcDefaultIndex
252);
253
254DWORD WINAPI PowerReadDCValueIndex(
255 HKEY RootPowerKey,
256 const GUID *SchemeGuid,
257 const GUID *SubGroupOfPowerSettingsGuid,
258 const GUID *PowerSettingGuid,
259 LPDWORD DcValueIndex
260);
261
262DWORD WINAPI PowerReadDescription(
263 HKEY RootPowerKey,
264 const GUID *SchemeGuid,
265 const GUID *SubGroupOfPowerSettingsGuid,
266 const GUID *PowerSettingGuid,
267 PUCHAR Buffer,
268 LPDWORD BufferSize
269);
270
271DWORD WINAPI PowerReadFriendlyName(
272 HKEY RootPowerKey,
273 const GUID *SchemeGuid,
274 const GUID *SubGroupOfPowerSettingsGuid,
275 const GUID *PowerSettingGuid,
276 PUCHAR Buffer,
277 LPDWORD BufferSize
278);
279
280DWORD WINAPI PowerReadIconResourceSpecifier(
281 HKEY RootPowerKey,
282 const GUID *SchemeGuid,
283 const GUID *SubGroupOfPowerSettingsGuid,
284 const GUID *PowerSettingGuid,
285 PUCHAR Buffer,
286 LPDWORD BufferSize
287);
288
289DWORD WINAPI PowerReadPossibleDescription(
290 HKEY RootPowerKey,
291 const GUID *SubGroupOfPowerSettingsGuid,
292 const GUID *PowerSettingGuid,
293 ULONG PossibleSettingIndex,
294 PUCHAR Buffer,
295 LPDWORD BufferSize
296);
297
298DWORD WINAPI PowerReadPossibleFriendlyName(
299 HKEY RootPowerKey,
300 const GUID *SubGroupOfPowerSettingsGuid,
301 const GUID *PowerSettingGuid,
302 ULONG PossibleSettingIndex,
303 PUCHAR Buffer,
304 LPDWORD BufferSize
305);
306
307DWORD WINAPI PowerReadPossibleValue(
308 HKEY RootPowerKey,
309 const GUID *SubGroupOfPowerSettingsGuid,
310 const GUID *PowerSettingGuid,
311 PULONG Type,
312 ULONG PossibleSettingIndex,
313 PUCHAR Buffer,
314 LPDWORD BufferSize
315);
316
317DWORD WINAPI PowerReadSettingAttributes(
318 const GUID *SubGroupGuid,
319 const GUID *PowerSettingGuid
320);
321
322DWORD WINAPI PowerReadValueIncrement(
323 HKEY RootPowerKey,
324 const GUID *SubGroupOfPowerSettingsGuid,
325 const GUID *PowerSettingGuid,
326 LPDWORD ValueIncrement
327);
328
329DWORD WINAPI PowerReadValueMax(
330 HKEY RootPowerKey,
331 const GUID *SubGroupOfPowerSettingsGuid,
332 const GUID *PowerSettingGuid,
333 LPDWORD ValueMaximum
334);
335
336DWORD WINAPI PowerReadValueMin(
337 HKEY RootPowerKey,
338 const GUID *SubGroupOfPowerSettingsGuid,
339 const GUID *PowerSettingGuid,
340 LPDWORD ValueMinimum
341);
342
343DWORD WINAPI PowerReadValueUnitsSpecifier(
344 HKEY RootPowerKey,
345 const GUID *SubGroupOfPowerSettingsGuid,
346 const GUID *PowerSettingGuid,
347 UCHAR *Buffer,
348 LPDWORD BufferSize
349);
350
351DWORD WINAPI PowerRemovePowerSetting(
352 const GUID *PowerSettingSubKeyGuid,
353 const GUID *PowerSettingGuid
354);
355
356DWORD WINAPI PowerReplaceDefaultPowerSchemes(void);
357
358DWORD WINAPI PowerRestoreDefaultPowerSchemes(void);
359
360DWORD WINAPI PowerRestoreIndividualDefaultPowerScheme(
361 const GUID *SchemeGuid
362);
363
364DWORD WINAPI PowerSettingAccessCheck(
365 POWER_DATA_ACCESSOR AccessFlags,
366 const GUID *PowerGuid
367);
368
369DWORD WINAPI PowerWriteACDefaultIndex(
370 HKEY RootSystemPowerKey,
371 const GUID *SchemePersonalityGuid,
372 const GUID *SubGroupOfPowerSettingsGuid,
373 const GUID *PowerSettingGuid,
374 DWORD DefaultAcIndex
375);
376
377DWORD WINAPI PowerWriteDCDefaultIndex(
378 HKEY RootSystemPowerKey,
379 const GUID *SchemePersonalityGuid,
380 const GUID *SubGroupOfPowerSettingsGuid,
381 const GUID *PowerSettingGuid,
382 DWORD DefaultDcIndex
383);
384
385DWORD WINAPI PowerWriteDescription(
386 HKEY RootPowerKey,
387 const GUID *SchemeGuid,
388 const GUID *SubGroupOfPowerSettingsGuid,
389 const GUID *PowerSettingGuid,
390 UCHAR *Buffer,
391 DWORD BufferSize
392);
393
394DWORD WINAPI PowerWriteFriendlyName(
395 HKEY RootPowerKey,
396 const GUID *SchemeGuid,
397 const GUID *SubGroupOfPowerSettingsGuid,
398 const GUID *PowerSettingGuid,
399 UCHAR *Buffer,
400 DWORD BufferSize
401);
402
403DWORD WINAPI PowerWriteIconResourceSpecifier(
404 HKEY RootPowerKey,
405 const GUID *SchemeGuid,
406 const GUID *SubGroupOfPowerSettingsGuid,
407 const GUID *PowerSettingGuid,
408 UCHAR *Buffer,
409 DWORD BufferSize
410);
411
412DWORD WINAPI PowerWritePossibleDescription(
413 HKEY RootPowerKey,
414 const GUID *SubGroupOfPowerSettingsGuid,
415 const GUID *PowerSettingGuid,
416 ULONG PossibleSettingIndex,
417 UCHAR *Buffer,
418 DWORD BufferSize
419);
420
421DWORD WINAPI PowerWritePossibleFriendlyName(
422 HKEY RootPowerKey,
423 const GUID *SubGroupOfPowerSettingsGuid,
424 const GUID *PowerSettingGuid,
425 ULONG PossibleSettingIndex,
426 UCHAR *Buffer,
427 DWORD BufferSize
428);
429
430DWORD WINAPI PowerWritePossibleValue(
431 HKEY RootPowerKey,
432 const GUID *SubGroupOfPowerSettingsGuid,
433 const GUID *PowerSettingGuid,
434 ULONG Type,
435 ULONG PossibleSettingIndex,
436 UCHAR *Buffer,
437 DWORD BufferSize
438);
439
440#define POWER_ATTRIBUTE_HIDE 1
441
442DWORD WINAPI PowerWriteSettingAttributes(
443 const GUID *SubGroupGuid,
444 const GUID *PowerSettingGuid,
445 DWORD Attributes
446);
447
448DWORD WINAPI PowerWriteValueIncrement(
449 HKEY RootPowerKey,
450 const GUID *SubGroupOfPowerSettingsGuid,
451 const GUID *PowerSettingGuid,
452 DWORD ValueIncrement
453);
454
455DWORD WINAPI PowerWriteValueMax(
456 HKEY RootPowerKey,
457 const GUID *SubGroupOfPowerSettingsGuid,
458 const GUID *PowerSettingGuid,
459 DWORD ValueMaximum
460);
461
462DWORD WINAPI PowerWriteValueMin(
463 HKEY RootPowerKey,
464 const GUID *SubGroupOfPowerSettingsGuid,
465 const GUID *PowerSettingGuid,
466 DWORD ValueMinimum
467);
468
469DWORD WINAPI PowerWriteValueUnitsSpecifier(
470 HKEY RootPowerKey,
471 const GUID *SubGroupOfPowerSettingsGuid,
472 const GUID *PowerSettingGuid,
473 UCHAR *Buffer,
474 DWORD BufferSize
475);
476
477#endif /*(_WIN32_WINNT >= 0x0600)*/
478
479#ifdef __cplusplus
480}
481#endif
482
483#endif /* _POWRPROF_H_ */