Artifact db10623ed83eba41cc472ab97647c9bdd6b4a6b0
/***********************************************************************\
* powrprof.d *
* *
* Windows API header module *
* *
* Translated from MinGW Windows headers *
* by Stewart Gordon *
* *
* Placed into public domain *
\***********************************************************************/
module win32.powrprof;
pragma(lib, "powrprof.lib");
private import win32.windef;
private import win32.ntdef;
// FIXME: look up Windows version support
const ULONG
EnableSysTrayBatteryMeter = 1,
EnableMultiBatteryDisplay = 2,
EnablePasswordLogon = 4,
EnableWakeOnRing = 8,
EnableVideoDimDisplay = 16;
const 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);
}