blob: 75ec73e8efed06092c78614f34d2a5d60f867b63 [file] [log] [blame]
/**
* 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 src/core/sys/windows/_powrprof.d)
*/
module core.sys.windows.powrprof;
version (Windows):
@system:
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 GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_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 GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY;
struct GLOBAL_POWER_POLICY {
GLOBAL_USER_POWER_POLICY user;
GLOBAL_MACHINE_POWER_POLICY mach;
}
alias GLOBAL_POWER_POLICY* PGLOBAL_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 MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY;
struct MACHINE_PROCESSOR_POWER_POLICY {
ULONG Revision;
PROCESSOR_POWER_POLICY ProcessorPolicyAc;
PROCESSOR_POWER_POLICY ProcessorPolicyDc;
}
alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_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 USER_POWER_POLICY* PUSER_POWER_POLICY;
struct POWER_POLICY {
USER_POWER_POLICY user;
MACHINE_POWER_POLICY mach;
}
alias POWER_POLICY* PPOWER_POLICY;
extern (Windows) {
alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY,
LPARAM) PWRSCHEMESENUMPROC;
alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN)
PFNNTINITIATEPWRACTION;
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);
}