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