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