| // 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; |
| } |