| /** | |
| * Windows API header module | |
| * | |
| * Translated from MinGW Windows headers | |
| * | |
| * Authors: Stewart Gordon | |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | |
| * Source: $(DRUNTIMESRC core/sys/windows/_powrprof.d) | |
| */ | |
| module core.sys.windows.powrprof; | |
| version (Windows): | |
| pragma(lib, "powrprof"); | |
| import core.sys.windows.windef; | |
| import core.sys.windows.ntdef; | |
| // FIXME: look up Windows version support | |
| enum ULONG | |
| EnableSysTrayBatteryMeter = 1, | |
| EnableMultiBatteryDisplay = 2, | |
| EnablePasswordLogon = 4, | |
| EnableWakeOnRing = 8, | |
| EnableVideoDimDisplay = 16; | |
| enum UINT NEWSCHEME = -1; | |
| struct GLOBAL_MACHINE_POWER_POLICY { | |
| ULONG Revision; | |
| SYSTEM_POWER_STATE LidOpenWakeAc; | |
| SYSTEM_POWER_STATE LidOpenWakeDc; | |
| ULONG BroadcastCapacityResolution; | |
| } | |
| alias PGLOBAL_MACHINE_POWER_POLICY = GLOBAL_MACHINE_POWER_POLICY*; | |
| struct GLOBAL_USER_POWER_POLICY { | |
| ULONG Revision; | |
| POWER_ACTION_POLICY PowerButtonAc; | |
| POWER_ACTION_POLICY PowerButtonDc; | |
| POWER_ACTION_POLICY SleepButtonAc; | |
| POWER_ACTION_POLICY SleepButtonDc; | |
| POWER_ACTION_POLICY LidCloseAc; | |
| POWER_ACTION_POLICY LidCloseDc; | |
| SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; | |
| ULONG GlobalFlags; | |
| } | |
| alias PGLOBAL_USER_POWER_POLICY = GLOBAL_USER_POWER_POLICY*; | |
| struct GLOBAL_POWER_POLICY { | |
| GLOBAL_USER_POWER_POLICY user; | |
| GLOBAL_MACHINE_POWER_POLICY mach; | |
| } | |
| alias PGLOBAL_POWER_POLICY = GLOBAL_POWER_POLICY*; | |
| struct MACHINE_POWER_POLICY { | |
| ULONG Revision; | |
| SYSTEM_POWER_STATE MinSleepAc; | |
| SYSTEM_POWER_STATE MinSleepDc; | |
| SYSTEM_POWER_STATE ReducedLatencySleepAc; | |
| SYSTEM_POWER_STATE ReducedLatencySleepDc; | |
| ULONG DozeTimeoutAc; | |
| ULONG DozeTimeoutDc; | |
| ULONG DozeS4TimeoutAc; | |
| ULONG DozeS4TimeoutDc; | |
| UCHAR MinThrottleAc; | |
| UCHAR MinThrottleDc; | |
| UCHAR[2] pad1; | |
| POWER_ACTION_POLICY OverThrottledAc; | |
| POWER_ACTION_POLICY OverThrottledDc; | |
| } | |
| alias PMACHINE_POWER_POLICY = MACHINE_POWER_POLICY*; | |
| struct MACHINE_PROCESSOR_POWER_POLICY { | |
| ULONG Revision; | |
| PROCESSOR_POWER_POLICY ProcessorPolicyAc; | |
| PROCESSOR_POWER_POLICY ProcessorPolicyDc; | |
| } | |
| alias PMACHINE_PROCESSOR_POWER_POLICY = MACHINE_PROCESSOR_POWER_POLICY*; | |
| struct USER_POWER_POLICY { | |
| ULONG Revision; | |
| POWER_ACTION_POLICY IdleAc; | |
| POWER_ACTION_POLICY IdleDc; | |
| ULONG IdleTimeoutAc; | |
| ULONG IdleTimeoutDc; | |
| UCHAR IdleSensitivityAc; | |
| UCHAR IdleSensitivityDc; | |
| UCHAR ThrottlePolicyAc; | |
| UCHAR ThrottlePolicyDc; | |
| SYSTEM_POWER_STATE MaxSleepAc; | |
| SYSTEM_POWER_STATE MaxSleepDc; | |
| ULONG[2] Reserved; | |
| ULONG VideoTimeoutAc; | |
| ULONG VideoTimeoutDc; | |
| ULONG SpindownTimeoutAc; | |
| ULONG SpindownTimeoutDc; | |
| BOOLEAN OptimizeForPowerAc; | |
| BOOLEAN OptimizeForPowerDc; | |
| UCHAR FanThrottleToleranceAc; | |
| UCHAR FanThrottleToleranceDc; | |
| UCHAR ForcedThrottleAc; | |
| UCHAR ForcedThrottleDc; | |
| } | |
| alias PUSER_POWER_POLICY = USER_POWER_POLICY*; | |
| struct POWER_POLICY { | |
| USER_POWER_POLICY user; | |
| MACHINE_POWER_POLICY mach; | |
| } | |
| alias PPOWER_POLICY = POWER_POLICY*; | |
| extern (Windows) { | |
| alias PWRSCHEMESENUMPROC = BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, | |
| LPARAM); | |
| alias PFNNTINITIATEPWRACTION = BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN); | |
| NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, | |
| PVOID, ULONG); | |
| BOOLEAN CanUserWritePwrScheme(); | |
| BOOLEAN DeletePwrScheme(UINT); | |
| BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); | |
| BOOLEAN GetActivePwrScheme(PUINT); | |
| BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); | |
| BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); | |
| BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); | |
| BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); | |
| BOOLEAN IsPwrHibernateAllowed(); | |
| BOOLEAN IsPwrShutdownAllowed(); | |
| BOOLEAN IsPwrSuspendAllowed(); | |
| BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); | |
| BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); | |
| BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); | |
| BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); | |
| BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); | |
| BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); | |
| BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); | |
| BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); | |
| BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); | |
| } |