| 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 |
} |
|---|