--- /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 <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
+
+#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 */