diff -r da7c1a80df0d -r d2d6724aef32 holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/ntpoapi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/ntpoapi.h Thu Sep 16 09:43:14 2010 +0100 @@ -0,0 +1,229 @@ +/* + * ntpoapi.h + * + * APIs for power management. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * 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 + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ntddk.h" +#include "batclass.h" + +#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 DDKFASTAPI +(*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 DDKFASTAPI +(*PSET_PROCESSOR_THROTTLE)( + /*IN*/ UCHAR Throttle); + +typedef NTSTATUS DDKFASTAPI +(*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 DDKAPI +(*PENTER_STATE_SYSTEM_HANDLER)( + /*IN*/ PVOID SystemContext); + +typedef NTSTATUS DDKAPI +(*PENTER_STATE_HANDLER)( + /*IN*/ PVOID Context, + /*IN*/ PENTER_STATE_SYSTEM_HANDLER SystemHandler /*OPTIONAL*/, + /*IN*/ PVOID SystemContext, + /*IN*/ LONG NumberProcessors, + /*IN*/ VOLATILE PLONG 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 STDCALL +(*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; + +NTOSAPI +NTSTATUS +DDKAPI +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; + + +NTOSAPI +NTSTATUS +DDKAPI +NtSetThreadExecutionState( + /*IN*/ EXECUTION_STATE esFlags, + /*OUT*/ EXECUTION_STATE *PreviousFlags); + +NTOSAPI +NTSTATUS +DDKAPI +NtRequestWakeupLatency( + /*IN*/ LATENCY_TIME latency); + +NTOSAPI +NTSTATUS +DDKAPI +NtInitiatePowerAction( + /*IN*/ POWER_ACTION SystemAction, + /*IN*/ SYSTEM_POWER_STATE MinSystemState, + /*IN*/ ULONG Flags, + /*IN*/ BOOLEAN Asynchronous); + +NTOSAPI +NTSTATUS +DDKAPI +NtSetSystemPowerState( + /*IN*/ POWER_ACTION SystemAction, + /*IN*/ SYSTEM_POWER_STATE MinSystemState, + /*IN*/ ULONG Flags); + +NTOSAPI +NTSTATUS +DDKAPI +NtGetDevicePowerState( + /*IN*/ HANDLE Device, + /*OUT*/ DEVICE_POWER_STATE *State); + +NTOSAPI +NTSTATUS +DDKAPI +NtCancelDeviceWakeupRequest( + /*IN*/ HANDLE Device); + +NTOSAPI +BOOLEAN +DDKAPI +NtIsSystemResumeAutomatic( + VOID); + +NTOSAPI +NTSTATUS +DDKAPI +NtRequestDeviceWakeup( + /*IN*/ HANDLE Device); + +#define WINLOGON_LOCK_ON_SLEEP 0x00000001 + +typedef struct _PROCESSOR_POWER_INFORMATION { + ULONG Number; + ULONG MaxMhz; + ULONG CurrentMhz; + ULONG MhzLimit; + ULONG MaxIdleState; + ULONG CurrentIdleState; +} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; + +#ifdef __cplusplus +} +#endif + +#endif /* __NTPOAPI_H */