123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- /*
- * ntpoapi.h
- *
- * APIs for power management.
- *
- * This file is part of the w32api package.
- *
- * Contributors:
- * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
- #ifndef __NTPOAPI_H
- #define __NTPOAPI_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef _PO_DDK_
- #define _PO_DDK_
- /* Power States/Levels */
- typedef enum _SYSTEM_POWER_STATE {
- PowerSystemUnspecified,
- PowerSystemWorking,
- PowerSystemSleeping1,
- PowerSystemSleeping2,
- PowerSystemSleeping3,
- PowerSystemHibernate,
- PowerSystemShutdown,
- PowerSystemMaximum
- } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
- #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
- typedef enum _DEVICE_POWER_STATE {
- PowerDeviceUnspecified,
- PowerDeviceD0,
- PowerDeviceD1,
- PowerDeviceD2,
- PowerDeviceD3,
- PowerDeviceMaximum
- } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
- typedef union _POWER_STATE {
- SYSTEM_POWER_STATE SystemState;
- DEVICE_POWER_STATE DeviceState;
- } POWER_STATE, *PPOWER_STATE;
- typedef enum _POWER_STATE_TYPE {
- SystemPowerState = 0,
- DevicePowerState
- } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
- typedef enum _POWER_INFORMATION_LEVEL {
- SystemPowerPolicyAc,
- SystemPowerPolicyDc,
- VerifySystemPolicyAc,
- VerifySystemPolicyDc,
- SystemPowerCapabilities,
- SystemBatteryState,
- SystemPowerStateHandler,
- ProcessorStateHandler,
- SystemPowerPolicyCurrent,
- AdministratorPowerPolicy,
- SystemReserveHiberFile,
- ProcessorInformation,
- SystemPowerInformation,
- ProcessorStateHandler2,
- LastWakeTime,
- LastSleepTime,
- SystemExecutionState,
- SystemPowerStateNotifyHandler,
- ProcessorPowerPolicyAc,
- ProcessorPowerPolicyDc,
- VerifyProcessorPowerPolicyAc,
- VerifyProcessorPowerPolicyDc,
- ProcessorPowerPolicyCurrent,
- SystemPowerStateLogging,
- SystemPowerLoggingEntry,
- SetPowerSettingValue,
- NotifyUserPowerSetting,
- PowerInformationLevelUnused0,
- PowerInformationLevelUnused1,
- SystemVideoState,
- TraceApplicationPowerMessage,
- TraceApplicationPowerMessageEnd,
- ProcessorPerfStates,
- ProcessorIdleStates,
- ProcessorCap,
- SystemWakeSource,
- SystemHiberFileInformation,
- TraceServicePowerMessage,
- ProcessorLoad,
- PowerShutdownNotification,
- MonitorCapabilities,
- SessionPowerInit,
- SessionDisplayState,
- PowerRequestCreate,
- PowerRequestAction,
- GetPowerRequestList,
- ProcessorInformationEx,
- NotifyUserModeLegacyPowerEvent,
- GroupPark,
- ProcessorIdleDomains,
- WakeTimerList,
- SystemHiberFileSize,
- PowerInformationLevelMaximum
- } POWER_INFORMATION_LEVEL;
- typedef enum {
- PowerActionNone,
- PowerActionReserved,
- PowerActionSleep,
- PowerActionHibernate,
- PowerActionShutdown,
- PowerActionShutdownReset,
- PowerActionShutdownOff,
- PowerActionWarmEject
- } POWER_ACTION, *PPOWER_ACTION;
- #if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
- typedef struct {
- ULONG Granularity;
- ULONG Capacity;
- } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */
- #endif /* _PO_DDK_ */
- #define POWER_PERF_SCALE 100
- #define PERF_LEVEL_TO_PERCENT(x) (((x) * 1000) / (POWER_PERF_SCALE * 10))
- #define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000)
- typedef struct _PROCESSOR_IDLE_TIMES {
- ULONGLONG StartTime;
- ULONGLONG EndTime;
- ULONG IdleHandlerReserved[4];
- } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
- typedef BOOLEAN
- (FASTCALL*PPROCESSOR_IDLE_HANDLER)(
- IN OUT PPROCESSOR_IDLE_TIMES IdleTimes);
- typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
- ULONG HardwareLatency;
- PPROCESSOR_IDLE_HANDLER Handler;
- } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
- typedef VOID
- (FASTCALL*PSET_PROCESSOR_THROTTLE)(
- IN UCHAR Throttle);
- typedef NTSTATUS
- (FASTCALL*PSET_PROCESSOR_THROTTLE2)(
- IN UCHAR Throttle);
- #define MAX_IDLE_HANDLERS 3
- typedef struct _PROCESSOR_STATE_HANDLER {
- UCHAR ThrottleScale;
- BOOLEAN ThrottleOnIdle;
- PSET_PROCESSOR_THROTTLE SetThrottle;
- ULONG NumIdleHandlers;
- PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
- } PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER;
- typedef enum _POWER_STATE_HANDLER_TYPE {
- PowerStateSleeping1,
- PowerStateSleeping2,
- PowerStateSleeping3,
- PowerStateSleeping4,
- PowerStateSleeping4Firmware,
- PowerStateShutdownReset,
- PowerStateShutdownOff,
- PowerStateMaximum
- } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
- typedef NTSTATUS
- (NTAPI*PENTER_STATE_SYSTEM_HANDLER)(
- IN PVOID SystemContext);
- typedef NTSTATUS
- (NTAPI*PENTER_STATE_HANDLER)(
- IN PVOID Context,
- IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL,
- IN PVOID SystemContext,
- IN LONG NumberProcessors,
- IN LONG volatile *Number);
- typedef struct _POWER_STATE_HANDLER {
- POWER_STATE_HANDLER_TYPE Type;
- BOOLEAN RtcWake;
- UCHAR Spare[3];
- PENTER_STATE_HANDLER Handler;
- PVOID Context;
- } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
- typedef NTSTATUS
- (NTAPI*PENTER_STATE_NOTIFY_HANDLER)(
- IN POWER_STATE_HANDLER_TYPE State,
- IN PVOID Context,
- IN BOOLEAN Entering);
- typedef struct _POWER_STATE_NOTIFY_HANDLER {
- PENTER_STATE_NOTIFY_HANDLER Handler;
- PVOID Context;
- } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtPowerInformation(
- IN POWER_INFORMATION_LEVEL InformationLevel,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength);
- #define PROCESSOR_STATE_TYPE_PERFORMANCE 1
- #define PROCESSOR_STATE_TYPE_THROTTLE 2
- typedef struct _PROCESSOR_PERF_LEVEL {
- UCHAR PercentFrequency;
- UCHAR Reserved;
- USHORT Flags;
- } PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL;
- typedef struct _PROCESSOR_PERF_STATE {
- UCHAR PercentFrequency;
- UCHAR MinCapacity;
- USHORT Power;
- UCHAR IncreaseLevel;
- UCHAR DecreaseLevel;
- USHORT Flags;
- ULONG IncreaseTime;
- ULONG DecreaseTime;
- ULONG IncreaseCount;
- ULONG DecreaseCount;
- ULONGLONG PerformanceTime;
- } PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
- typedef struct _PROCESSOR_STATE_HANDLER2 {
- ULONG NumIdleHandlers;
- PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
- PSET_PROCESSOR_THROTTLE2 SetPerfLevel;
- ULONG HardwareLatency;
- UCHAR NumPerfStates;
- PROCESSOR_PERF_LEVEL PerfLevel[1];
- } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetThreadExecutionState(
- IN EXECUTION_STATE esFlags,
- OUT EXECUTION_STATE *PreviousFlags);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtRequestWakeupLatency(
- IN LATENCY_TIME latency);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtInitiatePowerAction(
- IN POWER_ACTION SystemAction,
- IN SYSTEM_POWER_STATE MinSystemState,
- IN ULONG Flags,
- IN BOOLEAN Asynchronous);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetSystemPowerState(
- IN POWER_ACTION SystemAction,
- IN SYSTEM_POWER_STATE MinSystemState,
- IN ULONG Flags);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtGetDevicePowerState(
- IN HANDLE Device,
- OUT DEVICE_POWER_STATE *State);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtCancelDeviceWakeupRequest(
- IN HANDLE Device);
- NTSYSCALLAPI
- BOOLEAN
- NTAPI
- NtIsSystemResumeAutomatic(
- VOID);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtRequestDeviceWakeup(
- IN HANDLE Device);
- #define WINLOGON_LOCK_ON_SLEEP 0x00000001
- typedef struct {
- BOOLEAN PowerButtonPresent;
- BOOLEAN SleepButtonPresent;
- BOOLEAN LidPresent;
- BOOLEAN SystemS1;
- BOOLEAN SystemS2;
- BOOLEAN SystemS3;
- BOOLEAN SystemS4;
- BOOLEAN SystemS5;
- BOOLEAN HiberFilePresent;
- BOOLEAN FullWake;
- BOOLEAN VideoDimPresent;
- BOOLEAN ApmPresent;
- BOOLEAN UpsPresent;
- BOOLEAN ThermalControl;
- BOOLEAN ProcessorThrottle;
- UCHAR ProcessorMinThrottle;
- #if (NTDDI_VERSION < NTDDI_WINXP)
- UCHAR ProcessorThrottleScale;
- UCHAR spare2[4];
- #else
- UCHAR ProcessorMaxThrottle;
- BOOLEAN FastSystemS4;
- UCHAR spare2[3];
- #endif /* (NTDDI_VERSION < NTDDI_WINXP) */
- BOOLEAN DiskSpinDown;
- UCHAR spare3[8];
- BOOLEAN SystemBatteriesPresent;
- BOOLEAN BatteriesAreShortTerm;
- BATTERY_REPORTING_SCALE BatteryScale[3];
- SYSTEM_POWER_STATE AcOnLineWake;
- SYSTEM_POWER_STATE SoftLidWake;
- SYSTEM_POWER_STATE RtcWake;
- SYSTEM_POWER_STATE MinDeviceWakeState;
- SYSTEM_POWER_STATE DefaultLowLatencyWake;
- } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
- typedef struct {
- BOOLEAN AcOnLine;
- BOOLEAN BatteryPresent;
- BOOLEAN Charging;
- BOOLEAN Discharging;
- BOOLEAN Spare1[4];
- ULONG MaxCapacity;
- ULONG RemainingCapacity;
- ULONG Rate;
- ULONG EstimatedTime;
- ULONG DefaultAlert1;
- ULONG DefaultAlert2;
- } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
- typedef struct _PROCESSOR_POWER_INFORMATION {
- ULONG Number;
- ULONG MaxMhz;
- ULONG CurrentMhz;
- ULONG MhzLimit;
- ULONG MaxIdleState;
- ULONG CurrentIdleState;
- } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
- typedef struct _POWER_ACTION_POLICY {
- POWER_ACTION Action;
- ULONG Flags;
- ULONG EventCode;
- } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
- /* POWER_ACTION_POLICY.Flags constants */
- #define POWER_ACTION_QUERY_ALLOWED 0x00000001
- #define POWER_ACTION_UI_ALLOWED 0x00000002
- #define POWER_ACTION_OVERRIDE_APPS 0x00000004
- #define POWER_ACTION_LIGHTEST_FIRST 0x10000000
- #define POWER_ACTION_LOCK_CONSOLE 0x20000000
- #define POWER_ACTION_DISABLE_WAKES 0x40000000
- #define POWER_ACTION_CRITICAL 0x80000000
- /* POWER_ACTION_POLICY.EventCode constants */
- #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
- #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
- #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
- #define POWER_USER_NOTIFY_BUTTON 0x00000008
- #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
- #define POWER_FORCE_TRIGGER_RESET 0x80000000
- #define DISCHARGE_POLICY_CRITICAL 0
- #define DISCHARGE_POLICY_LOW 1
- #define NUM_DISCHARGE_POLICIES 4
- #define PO_THROTTLE_NONE 0
- #define PO_THROTTLE_CONSTANT 1
- #define PO_THROTTLE_DEGRADE 2
- #define PO_THROTTLE_ADAPTIVE 3
- #define PO_THROTTLE_MAXIMUM 4
- #ifdef __cplusplus
- }
- #endif
- #endif /* __NTPOAPI_H */
|