1
|
1 /***********************************************************************\
|
|
2 * powrprof.d *
|
|
3 * *
|
|
4 * Windows API header module *
|
|
5 * *
|
|
6 * Translated from MinGW Windows headers *
|
|
7 * by Stewart Gordon *
|
|
8 * *
|
|
9 * Placed into public domain *
|
|
10 \***********************************************************************/
|
|
11 module win32.powrprof;
|
|
12 pragma(lib, "powrprof.lib");
|
|
13
|
|
14 private import win32.windef;
|
|
15 private import win32.ntdef;
|
|
16
|
|
17 // FIXME: look up Windows version support
|
|
18
|
|
19 const ULONG
|
|
20 EnableSysTrayBatteryMeter = 1,
|
|
21 EnableMultiBatteryDisplay = 2,
|
|
22 EnablePasswordLogon = 4,
|
|
23 EnableWakeOnRing = 8,
|
|
24 EnableVideoDimDisplay = 16;
|
|
25
|
|
26 const UINT NEWSCHEME = -1;
|
|
27
|
|
28 struct GLOBAL_MACHINE_POWER_POLICY {
|
|
29 ULONG Revision;
|
|
30 SYSTEM_POWER_STATE LidOpenWakeAc;
|
|
31 SYSTEM_POWER_STATE LidOpenWakeDc;
|
|
32 ULONG BroadcastCapacityResolution;
|
|
33 }
|
|
34 alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY;
|
|
35
|
|
36 struct GLOBAL_USER_POWER_POLICY {
|
|
37 ULONG Revision;
|
|
38 POWER_ACTION_POLICY PowerButtonAc;
|
|
39 POWER_ACTION_POLICY PowerButtonDc;
|
|
40 POWER_ACTION_POLICY SleepButtonAc;
|
|
41 POWER_ACTION_POLICY SleepButtonDc;
|
|
42 POWER_ACTION_POLICY LidCloseAc;
|
|
43 POWER_ACTION_POLICY LidCloseDc;
|
|
44 SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy;
|
|
45 ULONG GlobalFlags;
|
|
46 }
|
|
47 alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY;
|
|
48
|
|
49 struct GLOBAL_POWER_POLICY {
|
|
50 GLOBAL_USER_POWER_POLICY user;
|
|
51 GLOBAL_MACHINE_POWER_POLICY mach;
|
|
52 }
|
|
53 alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY;
|
|
54
|
|
55 struct MACHINE_POWER_POLICY {
|
|
56 ULONG Revision;
|
|
57 SYSTEM_POWER_STATE MinSleepAc;
|
|
58 SYSTEM_POWER_STATE MinSleepDc;
|
|
59 SYSTEM_POWER_STATE ReducedLatencySleepAc;
|
|
60 SYSTEM_POWER_STATE ReducedLatencySleepDc;
|
|
61 ULONG DozeTimeoutAc;
|
|
62 ULONG DozeTimeoutDc;
|
|
63 ULONG DozeS4TimeoutAc;
|
|
64 ULONG DozeS4TimeoutDc;
|
|
65 UCHAR MinThrottleAc;
|
|
66 UCHAR MinThrottleDc;
|
|
67 UCHAR[2] pad1;
|
|
68 POWER_ACTION_POLICY OverThrottledAc;
|
|
69 POWER_ACTION_POLICY OverThrottledDc;
|
|
70 }
|
|
71 alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY;
|
|
72
|
|
73 struct MACHINE_PROCESSOR_POWER_POLICY {
|
|
74 ULONG Revision;
|
|
75 PROCESSOR_POWER_POLICY ProcessorPolicyAc;
|
|
76 PROCESSOR_POWER_POLICY ProcessorPolicyDc;
|
|
77 }
|
|
78 alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY;
|
|
79
|
|
80 struct USER_POWER_POLICY {
|
|
81 ULONG Revision;
|
|
82 POWER_ACTION_POLICY IdleAc;
|
|
83 POWER_ACTION_POLICY IdleDc;
|
|
84 ULONG IdleTimeoutAc;
|
|
85 ULONG IdleTimeoutDc;
|
|
86 UCHAR IdleSensitivityAc;
|
|
87 UCHAR IdleSensitivityDc;
|
|
88 UCHAR ThrottlePolicyAc;
|
|
89 UCHAR ThrottlePolicyDc;
|
|
90 SYSTEM_POWER_STATE MaxSleepAc;
|
|
91 SYSTEM_POWER_STATE MaxSleepDc;
|
|
92 ULONG[2] Reserved;
|
|
93 ULONG VideoTimeoutAc;
|
|
94 ULONG VideoTimeoutDc;
|
|
95 ULONG SpindownTimeoutAc;
|
|
96 ULONG SpindownTimeoutDc;
|
|
97 BOOLEAN OptimizeForPowerAc;
|
|
98 BOOLEAN OptimizeForPowerDc;
|
|
99 UCHAR FanThrottleToleranceAc;
|
|
100 UCHAR FanThrottleToleranceDc;
|
|
101 UCHAR ForcedThrottleAc;
|
|
102 UCHAR ForcedThrottleDc;
|
|
103 }
|
|
104 alias USER_POWER_POLICY* PUSER_POWER_POLICY;
|
|
105
|
|
106 struct POWER_POLICY {
|
|
107 USER_POWER_POLICY user;
|
|
108 MACHINE_POWER_POLICY mach;
|
|
109 }
|
|
110 alias POWER_POLICY* PPOWER_POLICY;
|
|
111
|
|
112 extern (Windows) {
|
|
113 alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY,
|
|
114 LPARAM) PWRSCHEMESENUMPROC;
|
|
115 alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN)
|
|
116 PFNNTINITIATEPWRACTION;
|
|
117
|
|
118 NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG,
|
|
119 PVOID, ULONG);
|
|
120 BOOLEAN CanUserWritePwrScheme();
|
|
121 BOOLEAN DeletePwrScheme(UINT);
|
|
122 BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM);
|
|
123 BOOLEAN GetActivePwrScheme(PUINT);
|
|
124 BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
|
|
125 BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
|
|
126 BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT);
|
|
127 BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
|
|
128 BOOLEAN IsPwrHibernateAllowed();
|
|
129 BOOLEAN IsPwrShutdownAllowed();
|
|
130 BOOLEAN IsPwrSuspendAllowed();
|
|
131 BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
|
|
132 BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
|
|
133 BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY);
|
|
134 BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
|
|
135 BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
|
|
136 BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
|
|
137 BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
|
|
138 BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
|
|
139 BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY);
|
|
140 }
|