Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ntpoapi.h
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 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "batclass.h" 00036 00037 #define POWER_PERF_SCALE 100 00038 #define PERF_LEVEL_TO_PERCENT(x) (((x) * 1000) / (POWER_PERF_SCALE * 10)) 00039 #define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000) 00040 00041 typedef struct _PROCESSOR_IDLE_TIMES { 00042 ULONGLONG StartTime; 00043 ULONGLONG EndTime; 00044 ULONG IdleHandlerReserved[4]; 00045 } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES; 00046 00047 typedef BOOLEAN DDKFASTAPI 00048 (*PPROCESSOR_IDLE_HANDLER)( 00049 /*IN OUT*/ PPROCESSOR_IDLE_TIMES IdleTimes); 00050 00051 typedef struct _PROCESSOR_IDLE_HANDLER_INFO { 00052 ULONG HardwareLatency; 00053 PPROCESSOR_IDLE_HANDLER Handler; 00054 } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO; 00055 00056 typedef VOID DDKFASTAPI 00057 (*PSET_PROCESSOR_THROTTLE)( 00058 /*IN*/ UCHAR Throttle); 00059 00060 typedef NTSTATUS DDKFASTAPI 00061 (*PSET_PROCESSOR_THROTTLE2)( 00062 /*IN*/ UCHAR Throttle); 00063 00064 #define MAX_IDLE_HANDLERS 3 00065 00066 typedef struct _PROCESSOR_STATE_HANDLER { 00067 UCHAR ThrottleScale; 00068 BOOLEAN ThrottleOnIdle; 00069 PSET_PROCESSOR_THROTTLE SetThrottle; 00070 ULONG NumIdleHandlers; 00071 PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; 00072 } PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER; 00073 00074 typedef enum _POWER_STATE_HANDLER_TYPE { 00075 PowerStateSleeping1, 00076 PowerStateSleeping2, 00077 PowerStateSleeping3, 00078 PowerStateSleeping4, 00079 PowerStateSleeping4Firmware, 00080 PowerStateShutdownReset, 00081 PowerStateShutdownOff, 00082 PowerStateMaximum 00083 } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE; 00084 00085 typedef NTSTATUS DDKAPI 00086 (*PENTER_STATE_SYSTEM_HANDLER)( 00087 /*IN*/ PVOID SystemContext); 00088 00089 typedef NTSTATUS DDKAPI 00090 (*PENTER_STATE_HANDLER)( 00091 /*IN*/ PVOID Context, 00092 /*IN*/ PENTER_STATE_SYSTEM_HANDLER SystemHandler /*OPTIONAL*/, 00093 /*IN*/ PVOID SystemContext, 00094 /*IN*/ LONG NumberProcessors, 00095 /*IN*/ VOLATILE PLONG Number); 00096 00097 typedef struct _POWER_STATE_HANDLER { 00098 POWER_STATE_HANDLER_TYPE Type; 00099 BOOLEAN RtcWake; 00100 UCHAR Spare[3]; 00101 PENTER_STATE_HANDLER Handler; 00102 PVOID Context; 00103 } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER; 00104 00105 typedef NTSTATUS STDCALL 00106 (*PENTER_STATE_NOTIFY_HANDLER)( 00107 /*IN*/ POWER_STATE_HANDLER_TYPE State, 00108 /*IN*/ PVOID Context, 00109 /*IN*/ BOOLEAN Entering); 00110 00111 typedef struct _POWER_STATE_NOTIFY_HANDLER { 00112 PENTER_STATE_NOTIFY_HANDLER Handler; 00113 PVOID Context; 00114 } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER; 00115 00116 NTOSAPI 00117 NTSTATUS 00118 DDKAPI 00119 NtPowerInformation( 00120 /*IN*/ POWER_INFORMATION_LEVEL InformationLevel, 00121 /*IN*/ PVOID InputBuffer /*OPTIONAL*/, 00122 /*IN*/ ULONG InputBufferLength, 00123 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, 00124 /*IN*/ ULONG OutputBufferLength); 00125 00126 #define PROCESSOR_STATE_TYPE_PERFORMANCE 1 00127 #define PROCESSOR_STATE_TYPE_THROTTLE 2 00128 00129 typedef struct _PROCESSOR_PERF_LEVEL { 00130 UCHAR PercentFrequency; 00131 UCHAR Reserved; 00132 USHORT Flags; 00133 } PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL; 00134 00135 typedef struct _PROCESSOR_PERF_STATE { 00136 UCHAR PercentFrequency; 00137 UCHAR MinCapacity; 00138 USHORT Power; 00139 UCHAR IncreaseLevel; 00140 UCHAR DecreaseLevel; 00141 USHORT Flags; 00142 ULONG IncreaseTime; 00143 ULONG DecreaseTime; 00144 ULONG IncreaseCount; 00145 ULONG DecreaseCount; 00146 ULONGLONG PerformanceTime; 00147 } PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE; 00148 00149 typedef struct _PROCESSOR_STATE_HANDLER2 { 00150 ULONG NumIdleHandlers; 00151 PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; 00152 PSET_PROCESSOR_THROTTLE2 SetPerfLevel; 00153 ULONG HardwareLatency; 00154 UCHAR NumPerfStates; 00155 PROCESSOR_PERF_LEVEL PerfLevel[1]; 00156 } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2; 00157 00158 00159 NTOSAPI 00160 NTSTATUS 00161 DDKAPI 00162 NtSetThreadExecutionState( 00163 /*IN*/ EXECUTION_STATE esFlags, 00164 /*OUT*/ EXECUTION_STATE *PreviousFlags); 00165 00166 NTOSAPI 00167 NTSTATUS 00168 DDKAPI 00169 NtRequestWakeupLatency( 00170 /*IN*/ LATENCY_TIME latency); 00171 00172 NTOSAPI 00173 NTSTATUS 00174 DDKAPI 00175 NtInitiatePowerAction( 00176 /*IN*/ POWER_ACTION SystemAction, 00177 /*IN*/ SYSTEM_POWER_STATE MinSystemState, 00178 /*IN*/ ULONG Flags, 00179 /*IN*/ BOOLEAN Asynchronous); 00180 00181 NTOSAPI 00182 NTSTATUS 00183 DDKAPI 00184 NtSetSystemPowerState( 00185 /*IN*/ POWER_ACTION SystemAction, 00186 /*IN*/ SYSTEM_POWER_STATE MinSystemState, 00187 /*IN*/ ULONG Flags); 00188 00189 NTOSAPI 00190 NTSTATUS 00191 DDKAPI 00192 NtGetDevicePowerState( 00193 /*IN*/ HANDLE Device, 00194 /*OUT*/ DEVICE_POWER_STATE *State); 00195 00196 NTOSAPI 00197 NTSTATUS 00198 DDKAPI 00199 NtCancelDeviceWakeupRequest( 00200 /*IN*/ HANDLE Device); 00201 00202 NTOSAPI 00203 BOOLEAN 00204 DDKAPI 00205 NtIsSystemResumeAutomatic( 00206 VOID); 00207 00208 NTOSAPI 00209 NTSTATUS 00210 DDKAPI 00211 NtRequestDeviceWakeup( 00212 /*IN*/ HANDLE Device); 00213 00214 #define WINLOGON_LOCK_ON_SLEEP 0x00000001 00215 00216 typedef struct _PROCESSOR_POWER_INFORMATION { 00217 ULONG Number; 00218 ULONG MaxMhz; 00219 ULONG CurrentMhz; 00220 ULONG MhzLimit; 00221 ULONG MaxIdleState; 00222 ULONG CurrentIdleState; 00223 } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; 00224 00225 #ifdef __cplusplus 00226 } 00227 #endif 00228 00229 #endif /* __NTPOAPI_H */
Generated on Tue Jul 12 2022 19:59:55 by
