summaryrefslogtreecommitdiff
path: root/vendor/winapi/src/um/powrprof.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/winapi/src/um/powrprof.rs')
-rw-r--r--vendor/winapi/src/um/powrprof.rs550
1 files changed, 550 insertions, 0 deletions
diff --git a/vendor/winapi/src/um/powrprof.rs b/vendor/winapi/src/um/powrprof.rs
new file mode 100644
index 0000000..d2d365f
--- /dev/null
+++ b/vendor/winapi/src/um/powrprof.rs
@@ -0,0 +1,550 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! Interface for powrprof.dll, the power policy applicator
+use shared::guiddef::GUID;
+use shared::minwindef::{
+ BOOL, DWORD, HKEY, LPARAM, LPDWORD, PBYTE, PUCHAR, PUINT, PULONG, UCHAR, UINT, ULONG,
+};
+use um::winnt::{
+ BOOLEAN, LPCWSTR, LPWSTR, NUM_DISCHARGE_POLICIES, PADMINISTRATOR_POWER_POLICY,
+ POWER_ACTION_POLICY, POWER_PLATFORM_ROLE, PROCESSOR_POWER_POLICY, PVOID, SYSTEM_POWER_LEVEL,
+ SYSTEM_POWER_STATE,
+};
+use um::winreg::REGSAM;
+STRUCT!{struct GLOBAL_MACHINE_POWER_POLICY {
+ Revision: ULONG,
+ LidOpenWakeAc: SYSTEM_POWER_STATE,
+ LidOpenWakeDc: SYSTEM_POWER_STATE,
+ BroadcastCapacityResolution: ULONG,
+}}
+pub type PGLOBAL_MACHINE_POWER_POLICY = *mut GLOBAL_MACHINE_POWER_POLICY;
+STRUCT!{struct GLOBAL_USER_POWER_POLICY {
+ Revision: ULONG,
+ PowerButtonAc: POWER_ACTION_POLICY,
+ PowerButtonDc: POWER_ACTION_POLICY,
+ SleepButtonAc: POWER_ACTION_POLICY,
+ SleepButtonDc: POWER_ACTION_POLICY,
+ LidCloseAc: POWER_ACTION_POLICY,
+ LidCloseDc: POWER_ACTION_POLICY,
+ DischargePolicy: [SYSTEM_POWER_LEVEL; NUM_DISCHARGE_POLICIES],
+ GlobalFlags: ULONG,
+}}
+pub type PGLOBAL_USER_POWER_POLICY = *mut GLOBAL_USER_POWER_POLICY;
+STRUCT!{struct GLOBAL_POWER_POLICY {
+ user: GLOBAL_USER_POWER_POLICY,
+ mach: GLOBAL_MACHINE_POWER_POLICY,
+}}
+pub type PGLOBAL_POWER_POLICY = *mut GLOBAL_POWER_POLICY;
+STRUCT!{struct MACHINE_POWER_POLICY {
+ Revision: ULONG,
+ MinSleepAc: SYSTEM_POWER_STATE,
+ MinSleepDc: SYSTEM_POWER_STATE,
+ ReducedLatencySleepAc: SYSTEM_POWER_STATE,
+ ReducedLatencySleepDc: SYSTEM_POWER_STATE,
+ DozeTimeoutAc: ULONG,
+ DozeTimeoutDc: ULONG,
+ DozeS4TimeoutAc: ULONG,
+ DozeS4TimeoutDc: ULONG,
+ MinThrottleAc: UCHAR,
+ MinThrottleDc: UCHAR,
+ pad1: [UCHAR; 2],
+ OverThrottledAc: POWER_ACTION_POLICY,
+ OverThrottledDc: POWER_ACTION_POLICY,
+}}
+pub type PMACHINE_POWER_POLICY = *mut MACHINE_POWER_POLICY;
+STRUCT!{struct MACHINE_PROCESSOR_POWER_POLICY {
+ Revision: ULONG,
+ ProcessorPolicyAc: PROCESSOR_POWER_POLICY,
+ ProcessorPolicyDc: PROCESSOR_POWER_POLICY,
+}}
+pub type PMACHINE_PROCESSOR_POWER_POLICY = *mut MACHINE_PROCESSOR_POWER_POLICY;
+STRUCT!{struct USER_POWER_POLICY {
+ Revision: ULONG,
+ IdleAc: POWER_ACTION_POLICY,
+ IdleDc: POWER_ACTION_POLICY,
+ IdleTimeoutAc: ULONG,
+ IdleTimeoutDc: ULONG,
+ IdleSensitivityAc: UCHAR,
+ IdleSensitivityDc: UCHAR,
+ ThrottlePolicyAc: UCHAR,
+ ThrottlePolicyDc: UCHAR,
+ MaxSleepAc: SYSTEM_POWER_STATE,
+ MaxSleepDc: SYSTEM_POWER_STATE,
+ Reserved: [ULONG; 2],
+ VideoTimeoutAc: ULONG,
+ VideoTimeoutDc: ULONG,
+ SpindownTimeoutAc: ULONG,
+ SpindownTimeoutDc: ULONG,
+ OptimizeForPowerAc: BOOLEAN,
+ OptimizeForPowerDc: BOOLEAN,
+ FanThrottleToleranceAc: UCHAR,
+ FanThrottleToleranceDc: UCHAR,
+ ForcedThrottleAc: UCHAR,
+ ForcedThrottleDc: UCHAR,
+}}
+pub type PUSER_POWER_POLICY = *mut USER_POWER_POLICY;
+STRUCT!{struct POWER_POLICY {
+ user: USER_POWER_POLICY,
+ mach: MACHINE_POWER_POLICY,
+}}
+pub type PPOWER_POLICY = *mut POWER_POLICY;
+pub const EnableSysTrayBatteryMeter: ULONG = 0x01;
+pub const EnableMultiBatteryDisplay: ULONG = 0x02;
+pub const EnablePasswordLogon: ULONG = 0x04;
+pub const EnableWakeOnRing: ULONG = 0x08;
+pub const EnableVideoDimDisplay: ULONG = 0x10;
+pub const POWER_ATTRIBUTE_HIDE: ULONG = 0x00000001;
+pub const POWER_ATTRIBUTE_SHOW_AOAC: ULONG = 0x00000002;
+pub const NEWSCHEME: UINT = -1i32 as u32;
+FN!{stdcall PWRSCHEMESENUMPROC_V1(
+ Index: UINT,
+ NameSize: DWORD,
+ Name: LPWSTR,
+ DescriptionSize: DWORD,
+ Description: LPWSTR,
+ Policy: PPOWER_POLICY,
+ Context: LPARAM,
+) -> BOOLEAN}
+FN!{stdcall PWRSCHEMESENUMPROC_V2(
+ Index: UINT,
+ NameSize: DWORD,
+ Name: LPWSTR,
+ DescriptionSize: DWORD,
+ Description: LPWSTR,
+ Policy: PPOWER_POLICY,
+ Context: LPARAM,
+) -> BOOLEAN}
+pub type PWRSCHEMESENUMPROC = *mut PWRSCHEMESENUMPROC_V2;
+extern "system" {
+ pub fn GetPwrDiskSpindownRange(
+ puiMax: PUINT,
+ puiMin: PUINT,
+ ) -> BOOLEAN;
+ pub fn EnumPwrSchemes(
+ lpfn: PWRSCHEMESENUMPROC,
+ lParam: LPARAM,
+ ) -> BOOLEAN;
+ pub fn ReadGlobalPwrPolicy(
+ pGlobalPowerPolicy: PGLOBAL_POWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn ReadPwrScheme(
+ uiID: UINT,
+ pPowerPolicy: PPOWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn WritePwrScheme(
+ puiID: PUINT,
+ lpszSchemeName: LPCWSTR,
+ lpszDescription: LPCWSTR,
+ lpScheme: PPOWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn WriteGlobalPwrPolicy(
+ pGlobalPowerPolicy: PGLOBAL_POWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn DeletePwrScheme(
+ uiID: UINT,
+ ) -> BOOLEAN;
+ pub fn GetActivePwrScheme(
+ puiID: PUINT,
+ ) -> BOOLEAN;
+ pub fn SetActivePwrScheme(
+ uiID: UINT,
+ pGlobalPowerPolicy: PGLOBAL_POWER_POLICY,
+ pPowerPolicy: PPOWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn IsPwrSuspendAllowed() -> BOOLEAN;
+ pub fn IsPwrHibernateAllowed() -> BOOLEAN;
+ pub fn IsPwrShutdownAllowed() -> BOOLEAN;
+ pub fn IsAdminOverrideActive(
+ papp: PADMINISTRATOR_POWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn SetSuspendState(
+ bHibernate: BOOLEAN,
+ bForce: BOOLEAN,
+ bWakeupEventsDisabled: BOOLEAN,
+ ) -> BOOLEAN;
+ pub fn GetCurrentPowerPolicies(
+ pGlobalPowerPolicy: PGLOBAL_POWER_POLICY,
+ pPowerPolicy: PPOWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn CanUserWritePwrScheme() -> BOOLEAN;
+ pub fn ReadProcessorPwrScheme(
+ uiID: UINT,
+ pMachineProcessorPowerPolicy: PMACHINE_PROCESSOR_POWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn WriteProcessorPwrScheme(
+ uiID: UINT,
+ pMachineProcessorPowerPolicy: PMACHINE_PROCESSOR_POWER_POLICY,
+ ) -> BOOLEAN;
+ pub fn ValidatePowerPolicies(
+ pGlobalPowerPolicy: PGLOBAL_POWER_POLICY,
+ pPowerPolicy: PPOWER_POLICY,
+ ) -> BOOLEAN;
+}
+ENUM!{enum POWER_DATA_ACCESSOR {
+ ACCESS_AC_POWER_SETTING_INDEX = 0,
+ ACCESS_DC_POWER_SETTING_INDEX,
+ ACCESS_FRIENDLY_NAME,
+ ACCESS_DESCRIPTION,
+ ACCESS_POSSIBLE_POWER_SETTING,
+ ACCESS_POSSIBLE_POWER_SETTING_FRIENDLY_NAME,
+ ACCESS_POSSIBLE_POWER_SETTING_DESCRIPTION,
+ ACCESS_DEFAULT_AC_POWER_SETTING,
+ ACCESS_DEFAULT_DC_POWER_SETTING,
+ ACCESS_POSSIBLE_VALUE_MIN,
+ ACCESS_POSSIBLE_VALUE_MAX,
+ ACCESS_POSSIBLE_VALUE_INCREMENT,
+ ACCESS_POSSIBLE_VALUE_UNITS,
+ ACCESS_ICON_RESOURCE,
+ ACCESS_DEFAULT_SECURITY_DESCRIPTOR,
+ ACCESS_ATTRIBUTES,
+ ACCESS_SCHEME,
+ ACCESS_SUBGROUP,
+ ACCESS_INDIVIDUAL_SETTING,
+ ACCESS_ACTIVE_SCHEME,
+ ACCESS_CREATE_SCHEME,
+ ACCESS_AC_POWER_SETTING_MAX,
+ ACCESS_DC_POWER_SETTING_MAX,
+ ACCESS_AC_POWER_SETTING_MIN,
+ ACCESS_DC_POWER_SETTING_MIN,
+ ACCESS_PROFILE,
+ ACCESS_OVERLAY_SCHEME,
+ ACCESS_ACTIVE_OVERLAY_SCHEME,
+}}
+pub type PPOWER_DATA_ACCESSOR = *mut POWER_DATA_ACCESSOR;
+pub const DEVICE_NOTIFY_CALLBACK: ULONG = 2;
+FN!{stdcall DEVICE_NOTIFY_CALLBACK_ROUTINE(
+ Context: PVOID,
+ Type: ULONG,
+ Setting: PVOID,
+) -> ULONG}
+pub type PDEVICE_NOTIFY_CALLBACK_ROUTINE = *mut DEVICE_NOTIFY_CALLBACK_ROUTINE;
+STRUCT!{struct DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS {
+ Callback: PDEVICE_NOTIFY_CALLBACK_ROUTINE,
+ Context: PVOID,
+}}
+pub type PDEVICE_NOTIFY_SUBSCRIBE_PARAMETERS = *mut DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS;
+extern "system" {
+ pub fn PowerIsSettingRangeDefined(
+ SubKeyGuid: *const GUID,
+ SettingGuid: *const GUID,
+ ) -> BOOLEAN;
+ pub fn PowerSettingAccessCheckEx(
+ AccessFlags: POWER_DATA_ACCESSOR,
+ PowerGuid: *const GUID,
+ AccessType: REGSAM,
+ ) -> DWORD;
+ pub fn PowerSettingAccessCheck(
+ AccessFlags: POWER_DATA_ACCESSOR,
+ PowerGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerReadACValueIndex(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ AcValueIndex: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadDCValueIndex(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ DcValueIndex: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadFriendlyName(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadDescription(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadPossibleValue(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Type: PULONG,
+ PossibleSettingIndex: ULONG,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadPossibleFriendlyName(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ PossibleSettingIndex: ULONG,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadPossibleDescription(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ PossibleSettingIndex: ULONG,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadValueMin(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueMinimum: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadValueMax(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueMaximum: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadValueIncrement(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueIncrement: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadValueUnitsSpecifier(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: *mut UCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadACDefaultIndex(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ AcDefaultIndex: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadDCDefaultIndex(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ DcDefaultIndex: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadIconResourceSpecifier(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: PUCHAR,
+ BufferSize: LPDWORD,
+ ) -> DWORD;
+ pub fn PowerReadSettingAttributes(
+ SubGroupGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerWriteFriendlyName(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteDescription(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWritePossibleValue(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Type: ULONG,
+ PossibleSettingIndex: ULONG,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWritePossibleFriendlyName(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ PossibleSettingIndex: ULONG,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWritePossibleDescription(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ PossibleSettingIndex: ULONG,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteValueMin(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueMinimum: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteValueMax(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueMaximum: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteValueIncrement(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ValueIncrement: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteValueUnitsSpecifier(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteACDefaultIndex(
+ RootSystemPowerKey: HKEY,
+ SchemePersonalityGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ DefaultAcIndex: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteDCDefaultIndex(
+ RootSystemPowerKey: HKEY,
+ SchemePersonalityGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ DefaultDcIndex: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteIconResourceSpecifier(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Buffer: *mut UCHAR,
+ BufferSize: DWORD,
+ ) -> DWORD;
+ pub fn PowerWriteSettingAttributes(
+ SubGroupGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ Attributes: DWORD,
+ ) -> DWORD;
+ pub fn PowerDuplicateScheme(
+ RootPowerKey: HKEY,
+ SourceSchemeGuid: *const GUID,
+ DestinationSchemeGuid: *mut *mut GUID,
+ ) -> DWORD;
+ pub fn PowerImportPowerScheme(
+ RootPowerKey: HKEY,
+ ImportFileNamePath: LPCWSTR,
+ DestinationSchemeGuid: *mut *mut GUID,
+ ) -> DWORD;
+ pub fn PowerDeleteScheme(
+ RootPowerKey: HKEY,
+ SchemeGuid: *mut GUID,
+ ) -> DWORD;
+ pub fn PowerRemovePowerSetting(
+ PowerSettingSubKeyGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerCreateSetting(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerCreatePossibleSetting(
+ RootPowerKey: HKEY,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ PowerSettingGuid: *const GUID,
+ PossibleSettingIndex: ULONG,
+ ) -> DWORD;
+ pub fn PowerEnumerate(
+ RootPowerKey: HKEY,
+ SchemeGuid: *const GUID,
+ SubGroupOfPowerSettingsGuid: *const GUID,
+ AccessFlags: POWER_DATA_ACCESSOR,
+ Index: ULONG,
+ Buffer: *mut UCHAR,
+ BufferSize: *mut DWORD,
+ ) -> DWORD;
+ pub fn PowerOpenUserPowerKey(
+ phUserPowerKey: *mut HKEY,
+ Access: REGSAM,
+ OpenExisting: BOOL,
+ ) -> DWORD;
+ pub fn PowerOpenSystemPowerKey(
+ phSystemPowerKey: *mut HKEY,
+ Access: REGSAM,
+ OpenExisting: BOOL,
+ ) -> DWORD;
+ pub fn PowerCanRestoreIndividualDefaultPowerScheme(
+ SchemeGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerRestoreIndividualDefaultPowerScheme(
+ SchemeGuid: *const GUID,
+ ) -> DWORD;
+ pub fn PowerRestoreDefaultPowerSchemes() -> DWORD;
+ pub fn PowerReplaceDefaultPowerSchemes() -> DWORD;
+ pub fn PowerDeterminePlatformRole() -> POWER_PLATFORM_ROLE;
+}
+pub const DEVICEPOWER_HARDWAREID: ULONG = 0x80000000;
+pub const DEVICEPOWER_AND_OPERATION: ULONG = 0x40000000;
+pub const DEVICEPOWER_FILTER_DEVICES_PRESENT: ULONG = 0x20000000;
+pub const DEVICEPOWER_FILTER_HARDWARE: ULONG = 0x10000000;
+pub const DEVICEPOWER_FILTER_WAKEENABLED: ULONG = 0x08000000;
+pub const DEVICEPOWER_FILTER_WAKEPROGRAMMABLE: ULONG = 0x04000000;
+pub const DEVICEPOWER_FILTER_ON_NAME: ULONG = 0x02000000;
+pub const DEVICEPOWER_SET_WAKEENABLED: ULONG = 0x00000001;
+pub const DEVICEPOWER_CLEAR_WAKEENABLED: ULONG = 0x00000002;
+pub const PDCAP_S0_SUPPORTED: ULONG = 0x00010000;
+pub const PDCAP_S1_SUPPORTED: ULONG = 0x00020000;
+pub const PDCAP_S2_SUPPORTED: ULONG = 0x00040000;
+pub const PDCAP_S3_SUPPORTED: ULONG = 0x00080000;
+pub const PDCAP_WAKE_FROM_S0_SUPPORTED: ULONG = 0x00100000;
+pub const PDCAP_WAKE_FROM_S1_SUPPORTED: ULONG = 0x00200000;
+pub const PDCAP_WAKE_FROM_S2_SUPPORTED: ULONG = 0x00400000;
+pub const PDCAP_WAKE_FROM_S3_SUPPORTED: ULONG = 0x00800000;
+pub const PDCAP_S4_SUPPORTED: ULONG = 0x01000000;
+pub const PDCAP_S5_SUPPORTED: ULONG = 0x02000000;
+extern "system" {
+ pub fn DevicePowerEnumDevices(
+ QueryIndex: ULONG,
+ QueryInterpretationFlags: ULONG,
+ QueryFlags: ULONG,
+ pReturnBuffer: PBYTE,
+ pBufferSize: PULONG,
+ ) -> BOOLEAN;
+ pub fn DevicePowerSetDeviceState(
+ DeviceDescription: LPCWSTR,
+ SetFlags: ULONG,
+ SetData: PVOID,
+ ) -> DWORD;
+ pub fn DevicePowerOpen(
+ DebugMask: ULONG,
+ ) -> BOOLEAN;
+ pub fn DevicePowerClose() -> BOOLEAN;
+}
+STRUCT!{struct THERMAL_EVENT {
+ Version: ULONG,
+ Size: ULONG,
+ Type: ULONG,
+ Temperature: ULONG,
+ TripPointTemperature: ULONG,
+ Initiator: LPWSTR,
+}}
+pub type PTHERMAL_EVENT = *mut THERMAL_EVENT;
+extern "system" {
+ pub fn PowerReportThermalEvent(
+ Event: PTHERMAL_EVENT,
+ ) -> DWORD;
+}