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