ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntpoapi.h
Go to the documentation of this file.
00001 /*
00002  * ntpoapi.h
00003  *
00004  * APIs for power management.
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef __NTPOAPI_H
00024 #define __NTPOAPI_H
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029 
00030 #ifndef _PO_DDK_
00031 #define _PO_DDK_
00032 
00033 /* Power States/Levels */
00034 typedef enum _SYSTEM_POWER_STATE {
00035   PowerSystemUnspecified,
00036   PowerSystemWorking,
00037   PowerSystemSleeping1,
00038   PowerSystemSleeping2,
00039   PowerSystemSleeping3,
00040   PowerSystemHibernate,
00041   PowerSystemShutdown,
00042   PowerSystemMaximum
00043 } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
00044 
00045 #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
00046 
00047 typedef enum _DEVICE_POWER_STATE {
00048   PowerDeviceUnspecified,
00049   PowerDeviceD0,
00050   PowerDeviceD1,
00051   PowerDeviceD2,
00052   PowerDeviceD3,
00053   PowerDeviceMaximum
00054 } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
00055 
00056 typedef union _POWER_STATE {
00057   SYSTEM_POWER_STATE SystemState;
00058   DEVICE_POWER_STATE DeviceState;
00059 } POWER_STATE, *PPOWER_STATE;
00060 
00061 typedef enum _POWER_STATE_TYPE {
00062   SystemPowerState = 0,
00063   DevicePowerState
00064 } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
00065 
00066 typedef enum _POWER_INFORMATION_LEVEL {
00067   SystemPowerPolicyAc,
00068   SystemPowerPolicyDc,
00069   VerifySystemPolicyAc,
00070   VerifySystemPolicyDc,
00071   SystemPowerCapabilities,
00072   SystemBatteryState,
00073   SystemPowerStateHandler,
00074   ProcessorStateHandler,
00075   SystemPowerPolicyCurrent,
00076   AdministratorPowerPolicy,
00077   SystemReserveHiberFile,
00078   ProcessorInformation,
00079   SystemPowerInformation,
00080   ProcessorStateHandler2,
00081   LastWakeTime,
00082   LastSleepTime,
00083   SystemExecutionState,
00084   SystemPowerStateNotifyHandler,
00085   ProcessorPowerPolicyAc,
00086   ProcessorPowerPolicyDc,
00087   VerifyProcessorPowerPolicyAc,
00088   VerifyProcessorPowerPolicyDc,
00089   ProcessorPowerPolicyCurrent,
00090   SystemPowerStateLogging,
00091   SystemPowerLoggingEntry,
00092   SetPowerSettingValue,
00093   NotifyUserPowerSetting,
00094   PowerInformationLevelUnused0,
00095   PowerInformationLevelUnused1,
00096   SystemVideoState,
00097   TraceApplicationPowerMessage,
00098   TraceApplicationPowerMessageEnd,
00099   ProcessorPerfStates,
00100   ProcessorIdleStates,
00101   ProcessorCap,
00102   SystemWakeSource,
00103   SystemHiberFileInformation,
00104   TraceServicePowerMessage,
00105   ProcessorLoad,
00106   PowerShutdownNotification,
00107   MonitorCapabilities,
00108   SessionPowerInit,
00109   SessionDisplayState,
00110   PowerRequestCreate,
00111   PowerRequestAction,
00112   GetPowerRequestList,
00113   ProcessorInformationEx,
00114   NotifyUserModeLegacyPowerEvent,
00115   GroupPark,
00116   ProcessorIdleDomains,
00117   WakeTimerList,
00118   SystemHiberFileSize,
00119   PowerInformationLevelMaximum
00120 } POWER_INFORMATION_LEVEL;
00121 
00122 typedef enum {
00123   PowerActionNone,
00124   PowerActionReserved,
00125   PowerActionSleep,
00126   PowerActionHibernate,
00127   PowerActionShutdown,
00128   PowerActionShutdownReset,
00129   PowerActionShutdownOff,
00130   PowerActionWarmEject
00131 } POWER_ACTION, *PPOWER_ACTION;
00132 
00133 #if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
00134 typedef struct {
00135   ULONG Granularity;
00136   ULONG Capacity;
00137 } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
00138 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */
00139 
00140 
00141 #endif /* _PO_DDK_ */
00142 
00143 #define POWER_PERF_SCALE                  100
00144 #define PERF_LEVEL_TO_PERCENT(x)          (((x) * 1000) / (POWER_PERF_SCALE * 10))
00145 #define PERCENT_TO_PERF_LEVEL(x)          (((x) * POWER_PERF_SCALE * 10) / 1000)
00146 
00147 typedef struct _PROCESSOR_IDLE_TIMES {
00148   ULONGLONG StartTime;
00149   ULONGLONG EndTime;
00150   ULONG IdleHandlerReserved[4];
00151 } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
00152 
00153 typedef BOOLEAN
00154 (FASTCALL*PPROCESSOR_IDLE_HANDLER)(
00155   IN OUT PPROCESSOR_IDLE_TIMES IdleTimes);
00156 
00157 typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
00158   ULONG HardwareLatency;
00159   PPROCESSOR_IDLE_HANDLER Handler;
00160 } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
00161 
00162 typedef VOID
00163 (FASTCALL*PSET_PROCESSOR_THROTTLE)(
00164   IN UCHAR Throttle);
00165 
00166 typedef NTSTATUS
00167 (FASTCALL*PSET_PROCESSOR_THROTTLE2)(
00168   IN UCHAR Throttle);
00169 
00170 #define MAX_IDLE_HANDLERS                 3
00171 
00172 typedef struct _PROCESSOR_STATE_HANDLER {
00173   UCHAR ThrottleScale;
00174   BOOLEAN ThrottleOnIdle;
00175   PSET_PROCESSOR_THROTTLE SetThrottle;
00176   ULONG NumIdleHandlers;
00177   PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
00178 } PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER;
00179 
00180 typedef enum _POWER_STATE_HANDLER_TYPE {
00181   PowerStateSleeping1,
00182   PowerStateSleeping2,
00183   PowerStateSleeping3,
00184   PowerStateSleeping4,
00185   PowerStateSleeping4Firmware,
00186   PowerStateShutdownReset,
00187   PowerStateShutdownOff,
00188   PowerStateMaximum
00189 } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
00190 
00191 typedef NTSTATUS
00192 (NTAPI*PENTER_STATE_SYSTEM_HANDLER)(
00193   IN PVOID SystemContext);
00194 
00195 typedef NTSTATUS
00196 (NTAPI*PENTER_STATE_HANDLER)(
00197   IN PVOID Context,
00198   IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL,
00199   IN PVOID SystemContext,
00200   IN LONG NumberProcessors,
00201   IN LONG volatile *Number);
00202 
00203 typedef struct _POWER_STATE_HANDLER {
00204   POWER_STATE_HANDLER_TYPE Type;
00205   BOOLEAN RtcWake;
00206   UCHAR Spare[3];
00207   PENTER_STATE_HANDLER Handler;
00208   PVOID Context;
00209 } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
00210 
00211 typedef NTSTATUS
00212 (NTAPI*PENTER_STATE_NOTIFY_HANDLER)(
00213   IN POWER_STATE_HANDLER_TYPE State,
00214   IN PVOID Context,
00215   IN BOOLEAN Entering);
00216 
00217 typedef struct _POWER_STATE_NOTIFY_HANDLER {
00218   PENTER_STATE_NOTIFY_HANDLER Handler;
00219   PVOID Context;
00220 } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
00221 
00222 NTSYSCALLAPI
00223 NTSTATUS
00224 NTAPI
00225 NtPowerInformation(
00226   IN POWER_INFORMATION_LEVEL InformationLevel,
00227   IN PVOID InputBuffer OPTIONAL,
00228   IN ULONG InputBufferLength,
00229   OUT PVOID OutputBuffer OPTIONAL,
00230   IN ULONG OutputBufferLength);
00231 
00232 #define PROCESSOR_STATE_TYPE_PERFORMANCE  1
00233 #define PROCESSOR_STATE_TYPE_THROTTLE     2
00234 
00235 typedef struct _PROCESSOR_PERF_LEVEL {
00236   UCHAR PercentFrequency;
00237   UCHAR Reserved;
00238   USHORT Flags;
00239 } PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL;
00240 
00241 typedef struct _PROCESSOR_PERF_STATE {
00242   UCHAR PercentFrequency;
00243   UCHAR MinCapacity;
00244   USHORT Power;
00245   UCHAR IncreaseLevel;
00246   UCHAR DecreaseLevel;
00247   USHORT Flags;
00248   ULONG IncreaseTime;
00249   ULONG DecreaseTime;
00250   ULONG IncreaseCount;
00251   ULONG DecreaseCount;
00252   ULONGLONG PerformanceTime;
00253 } PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
00254 
00255 typedef struct _PROCESSOR_STATE_HANDLER2 {
00256   ULONG NumIdleHandlers;
00257   PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
00258   PSET_PROCESSOR_THROTTLE2 SetPerfLevel;
00259   ULONG HardwareLatency;
00260   UCHAR NumPerfStates;
00261   PROCESSOR_PERF_LEVEL PerfLevel[1];
00262 } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
00263 
00264 NTSYSCALLAPI
00265 NTSTATUS
00266 NTAPI
00267 NtSetThreadExecutionState(
00268   IN EXECUTION_STATE esFlags,
00269   OUT EXECUTION_STATE *PreviousFlags);
00270 
00271 NTSYSCALLAPI
00272 NTSTATUS
00273 NTAPI
00274 NtRequestWakeupLatency(
00275   IN LATENCY_TIME latency);
00276 
00277 NTSYSCALLAPI
00278 NTSTATUS
00279 NTAPI
00280 NtInitiatePowerAction(
00281   IN POWER_ACTION SystemAction,
00282   IN SYSTEM_POWER_STATE MinSystemState,
00283   IN ULONG Flags,
00284   IN BOOLEAN Asynchronous);
00285 
00286 NTSYSCALLAPI
00287 NTSTATUS
00288 NTAPI
00289 NtSetSystemPowerState(
00290   IN POWER_ACTION SystemAction,
00291   IN SYSTEM_POWER_STATE MinSystemState,
00292   IN ULONG Flags);
00293 
00294 NTSYSCALLAPI
00295 NTSTATUS
00296 NTAPI
00297 NtGetDevicePowerState(
00298   IN HANDLE Device,
00299   OUT DEVICE_POWER_STATE *State);
00300 
00301 NTSYSCALLAPI
00302 NTSTATUS
00303 NTAPI
00304 NtCancelDeviceWakeupRequest(
00305   IN HANDLE Device);
00306 
00307 NTSYSCALLAPI
00308 BOOLEAN
00309 NTAPI
00310 NtIsSystemResumeAutomatic(VOID);
00311 
00312 NTSYSCALLAPI
00313 NTSTATUS
00314 NTAPI
00315 NtRequestDeviceWakeup(
00316   IN HANDLE Device);
00317 
00318 #define WINLOGON_LOCK_ON_SLEEP            0x00000001
00319 
00320 typedef struct {
00321   BOOLEAN PowerButtonPresent;
00322   BOOLEAN SleepButtonPresent;
00323   BOOLEAN LidPresent;
00324   BOOLEAN SystemS1;
00325   BOOLEAN SystemS2;
00326   BOOLEAN SystemS3;
00327   BOOLEAN SystemS4;
00328   BOOLEAN SystemS5;
00329   BOOLEAN HiberFilePresent;
00330   BOOLEAN FullWake;
00331   BOOLEAN VideoDimPresent;
00332   BOOLEAN ApmPresent;
00333   BOOLEAN UpsPresent;
00334   BOOLEAN ThermalControl;
00335   BOOLEAN ProcessorThrottle;
00336   UCHAR ProcessorMinThrottle;
00337 #if (NTDDI_VERSION < NTDDI_WINXP)
00338   UCHAR ProcessorThrottleScale;
00339   UCHAR spare2[4];
00340 #else
00341   UCHAR ProcessorMaxThrottle;
00342   BOOLEAN FastSystemS4;
00343   UCHAR spare2[3];
00344 #endif /* (NTDDI_VERSION < NTDDI_WINXP) */
00345   BOOLEAN DiskSpinDown;
00346   UCHAR spare3[8];
00347   BOOLEAN SystemBatteriesPresent;
00348   BOOLEAN BatteriesAreShortTerm;
00349   BATTERY_REPORTING_SCALE BatteryScale[3];
00350   SYSTEM_POWER_STATE AcOnLineWake;
00351   SYSTEM_POWER_STATE SoftLidWake;
00352   SYSTEM_POWER_STATE RtcWake;
00353   SYSTEM_POWER_STATE MinDeviceWakeState;
00354   SYSTEM_POWER_STATE DefaultLowLatencyWake;
00355 } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
00356 
00357 typedef struct {
00358   BOOLEAN AcOnLine;
00359   BOOLEAN BatteryPresent;
00360   BOOLEAN Charging;
00361   BOOLEAN Discharging;
00362   BOOLEAN Spare1[4];
00363   ULONG MaxCapacity;
00364   ULONG RemainingCapacity;
00365   ULONG Rate;
00366   ULONG EstimatedTime;
00367   ULONG DefaultAlert1;
00368   ULONG DefaultAlert2;
00369 } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
00370 
00371 typedef struct _PROCESSOR_POWER_INFORMATION {
00372   ULONG Number;
00373   ULONG MaxMhz;
00374   ULONG CurrentMhz;
00375   ULONG MhzLimit;
00376   ULONG MaxIdleState;
00377   ULONG CurrentIdleState;
00378 } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
00379 
00380 typedef struct _POWER_ACTION_POLICY {
00381   POWER_ACTION Action;
00382   ULONG Flags;
00383   ULONG EventCode;
00384 } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
00385 
00386 /* POWER_ACTION_POLICY.Flags constants */
00387 #define POWER_ACTION_QUERY_ALLOWED        0x00000001
00388 #define POWER_ACTION_UI_ALLOWED           0x00000002
00389 #define POWER_ACTION_OVERRIDE_APPS        0x00000004
00390 #define POWER_ACTION_LIGHTEST_FIRST       0x10000000
00391 #define POWER_ACTION_LOCK_CONSOLE         0x20000000
00392 #define POWER_ACTION_DISABLE_WAKES        0x40000000
00393 #define POWER_ACTION_CRITICAL             0x80000000
00394 
00395 /* POWER_ACTION_POLICY.EventCode constants */
00396 #define POWER_LEVEL_USER_NOTIFY_TEXT      0x00000001
00397 #define POWER_LEVEL_USER_NOTIFY_SOUND     0x00000002
00398 #define POWER_LEVEL_USER_NOTIFY_EXEC      0x00000004
00399 #define POWER_USER_NOTIFY_BUTTON          0x00000008
00400 #define POWER_USER_NOTIFY_SHUTDOWN        0x00000010
00401 #define POWER_FORCE_TRIGGER_RESET         0x80000000
00402 
00403 #define DISCHARGE_POLICY_CRITICAL         0
00404 #define DISCHARGE_POLICY_LOW              1
00405 #define NUM_DISCHARGE_POLICIES            4
00406 
00407 #define PO_THROTTLE_NONE                  0
00408 #define PO_THROTTLE_CONSTANT              1
00409 #define PO_THROTTLE_DEGRADE               2
00410 #define PO_THROTTLE_ADAPTIVE              3
00411 #define PO_THROTTLE_MAXIMUM               4
00412 
00413 #ifdef __cplusplus
00414 }
00415 #endif
00416 
00417 #endif /* __NTPOAPI_H */

Generated on Sat May 26 2012 04:28:55 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.