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_ */