3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
32 #define EnableMultiBatteryDisplay 2
33 #define EnablePasswordLogon 4
34 #define EnableSysTrayBatteryMeter 1
35 #define EnableWakeOnRing 8
36 #define EnableVideoDimDisplay 16
37 #define NEWSCHEME (UINT)-1
40 #include <ntdef.h> /* for NTSTATUS */
41 typedef struct _GLOBAL_MACHINE_POWER_POLICY{
43 SYSTEM_POWER_STATE LidOpenWakeAc;
44 SYSTEM_POWER_STATE LidOpenWakeDc;
45 ULONG BroadcastCapacityResolution;
46 } GLOBAL_MACHINE_POWER_POLICY, *PGLOBAL_MACHINE_POWER_POLICY;
47 typedef struct _GLOBAL_USER_POWER_POLICY{
49 POWER_ACTION_POLICY PowerButtonAc;
50 POWER_ACTION_POLICY PowerButtonDc;
51 POWER_ACTION_POLICY SleepButtonAc;
52 POWER_ACTION_POLICY SleepButtonDc;
53 POWER_ACTION_POLICY LidCloseAc;
54 POWER_ACTION_POLICY LidCloseDc;
55 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
57 } GLOBAL_USER_POWER_POLICY, *PGLOBAL_USER_POWER_POLICY;
58 typedef struct _GLOBAL_POWER_POLICY{
59 GLOBAL_USER_POWER_POLICY user;
60 GLOBAL_MACHINE_POWER_POLICY mach;
61 } GLOBAL_POWER_POLICY, *PGLOBAL_POWER_POLICY;
62 typedef struct _MACHINE_POWER_POLICY{
64 SYSTEM_POWER_STATE MinSleepAc;
65 SYSTEM_POWER_STATE MinSleepDc;
66 SYSTEM_POWER_STATE ReducedLatencySleepAc;
67 SYSTEM_POWER_STATE ReducedLatencySleepDc;
70 ULONG DozeS4TimeoutAc;
71 ULONG DozeS4TimeoutDc;
75 POWER_ACTION_POLICY OverThrottledAc;
76 POWER_ACTION_POLICY OverThrottledDc;
77 } MACHINE_POWER_POLICY, *PMACHINE_POWER_POLICY;
78 typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
80 PROCESSOR_POWER_POLICY ProcessorPolicyAc;
81 PROCESSOR_POWER_POLICY ProcessorPolicyDc;
82 } MACHINE_PROCESSOR_POWER_POLICY, *PMACHINE_PROCESSOR_POWER_POLICY;
83 typedef struct _USER_POWER_POLICY{
85 POWER_ACTION_POLICY IdleAc;
86 POWER_ACTION_POLICY IdleDc;
89 UCHAR IdleSensitivityAc;
90 UCHAR IdleSensitivityDc;
91 UCHAR ThrottlePolicyAc;
92 UCHAR ThrottlePolicyDc;
93 SYSTEM_POWER_STATE MaxSleepAc;
94 SYSTEM_POWER_STATE MaxSleepDc;
98 ULONG SpindownTimeoutAc;
99 ULONG SpindownTimeoutDc;
100 BOOLEAN OptimizeForPowerAc;
101 BOOLEAN OptimizeForPowerDc;
102 UCHAR FanThrottleToleranceAc;
103 UCHAR FanThrottleToleranceDc;
104 UCHAR ForcedThrottleAc;
105 UCHAR ForcedThrottleDc;
106 } USER_POWER_POLICY, *PUSER_POWER_POLICY;
107 typedef struct _POWER_POLICY{
108 USER_POWER_POLICY user;
109 MACHINE_POWER_POLICY mach;
110 } POWER_POLICY, *PPOWER_POLICY;
111 typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, LPARAM);
112 typedef BOOLEAN (CALLBACK* PFNNTINITIATEPWRACTION)(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN);
113 NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG);
114 BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
115 BOOLEAN WINAPI DeletePwrScheme(UINT);
116 BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM);
117 BOOLEAN WINAPI GetActivePwrScheme(PUINT);
118 BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
119 BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
120 BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT, PUINT);
121 BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
122 BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
123 BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
124 BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
125 BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
126 BOOLEAN WINAPI ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
127 BOOLEAN WINAPI ReadPwrScheme(UINT, PPOWER_POLICY);
128 BOOLEAN WINAPI SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
129 BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
130 BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
131 BOOLEAN WINAPI WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
132 BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
133 BOOLEAN WINAPI WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY);
135 #endif /* RC_INVOKED */
141 #endif /* _POWRPROF_H */