Embed:
(wiki syntax)
Show/hide line numbers
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
1.7.2