[HEADERS]
[reactos.git] / reactos / include / ddk / ntpoapi.h
index 3dacf56..48f7107 100644 (file)
 #ifndef __NTPOAPI_H
 #define __NTPOAPI_H
 
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#include "batclass.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#ifndef _PO_DDK_
+#define _PO_DDK_
+
+/* Power States/Levels */
+typedef enum _SYSTEM_POWER_STATE {
+    PowerSystemUnspecified,
+    PowerSystemWorking,
+    PowerSystemSleeping1,
+    PowerSystemSleeping2,
+    PowerSystemSleeping3,
+    PowerSystemHibernate,
+    PowerSystemShutdown,
+    PowerSystemMaximum
+} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
+#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
+
+typedef enum _DEVICE_POWER_STATE {
+    PowerDeviceUnspecified,
+    PowerDeviceD0,
+    PowerDeviceD1,
+    PowerDeviceD2,
+    PowerDeviceD3,
+    PowerDeviceMaximum
+} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
+
+typedef union _POWER_STATE {
+  SYSTEM_POWER_STATE  SystemState;
+  DEVICE_POWER_STATE  DeviceState;
+} POWER_STATE, *PPOWER_STATE;
+
+typedef enum _POWER_STATE_TYPE {
+  SystemPowerState = 0,
+  DevicePowerState
+} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
+
+typedef enum _POWER_INFORMATION_LEVEL {
+    SystemPowerPolicyAc,
+    SystemPowerPolicyDc,
+    VerifySystemPolicyAc,
+    VerifySystemPolicyDc,
+    SystemPowerCapabilities,
+    SystemBatteryState,
+    SystemPowerStateHandler,
+    ProcessorStateHandler,
+    SystemPowerPolicyCurrent,
+    AdministratorPowerPolicy,
+    SystemReserveHiberFile,
+    ProcessorInformation,
+    SystemPowerInformation,
+    ProcessorStateHandler2,
+    LastWakeTime,
+    LastSleepTime,
+    SystemExecutionState,
+    SystemPowerStateNotifyHandler,
+    ProcessorPowerPolicyAc,
+    ProcessorPowerPolicyDc,
+    VerifyProcessorPowerPolicyAc,
+    VerifyProcessorPowerPolicyDc,
+    ProcessorPowerPolicyCurrent,
+    SystemPowerStateLogging,
+    SystemPowerLoggingEntry,
+    SetPowerSettingValue,
+    NotifyUserPowerSetting,
+    PowerInformationLevelUnused0,
+    PowerInformationLevelUnused1,
+    SystemVideoState,
+    TraceApplicationPowerMessage,
+    TraceApplicationPowerMessageEnd,
+    ProcessorPerfStates,
+    ProcessorIdleStates,
+    ProcessorCap,
+    SystemWakeSource,
+    SystemHiberFileInformation,
+    TraceServicePowerMessage,
+    ProcessorLoad,
+    PowerShutdownNotification,
+    MonitorCapabilities,
+    SessionPowerInit,
+    SessionDisplayState,
+    PowerRequestCreate,
+    PowerRequestAction,
+    GetPowerRequestList,
+    ProcessorInformationEx,
+    NotifyUserModeLegacyPowerEvent,
+    GroupPark,
+    ProcessorIdleDomains,
+    WakeTimerList,
+    SystemHiberFileSize,
+    PowerInformationLevelMaximum
+} POWER_INFORMATION_LEVEL;
+
+typedef enum {
+    PowerActionNone,
+    PowerActionReserved,
+    PowerActionSleep,
+    PowerActionHibernate,
+    PowerActionShutdown,
+    PowerActionShutdownReset,
+    PowerActionShutdownOff,
+    PowerActionWarmEject
+} POWER_ACTION, *PPOWER_ACTION;
+
+#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
+typedef struct {
+    ULONG Granularity;
+    ULONG Capacity;
+} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */
+
+
+#endif /* _PO_DDK_ */
+
 #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)
@@ -44,7 +150,7 @@ typedef struct _PROCESSOR_IDLE_TIMES {
 } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
 
 typedef BOOLEAN
-(DDKFASTAPI*PPROCESSOR_IDLE_HANDLER)(
+(FASTCALL*PPROCESSOR_IDLE_HANDLER)(
   IN OUT PPROCESSOR_IDLE_TIMES IdleTimes);
 
 typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
@@ -53,11 +159,11 @@ typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
 } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
 
 typedef VOID
-(DDKFASTAPI*PSET_PROCESSOR_THROTTLE)(
+(FASTCALL*PSET_PROCESSOR_THROTTLE)(
   IN UCHAR  Throttle);
 
 typedef NTSTATUS
-(DDKFASTAPI*PSET_PROCESSOR_THROTTLE2)(
+(FASTCALL*PSET_PROCESSOR_THROTTLE2)(
   IN UCHAR  Throttle);
 
 #define MAX_IDLE_HANDLERS                 3
@@ -82,16 +188,16 @@ typedef enum _POWER_STATE_HANDLER_TYPE {
 } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
 
 typedef NTSTATUS
-(DDKAPI*PENTER_STATE_SYSTEM_HANDLER)(
+(NTAPI*PENTER_STATE_SYSTEM_HANDLER)(
   IN PVOID  SystemContext);
 
 typedef NTSTATUS
-(DDKAPI*PENTER_STATE_HANDLER)(
+(NTAPI*PENTER_STATE_HANDLER)(
   IN PVOID  Context,
   IN PENTER_STATE_SYSTEM_HANDLER  SystemHandler  OPTIONAL,
   IN PVOID  SystemContext,
   IN LONG  NumberProcessors,
-  IN VOLATILE PLONG  Number);
+  IN LONG volatile *Number);
 
 typedef struct _POWER_STATE_HANDLER {
        POWER_STATE_HANDLER_TYPE  Type;
@@ -102,7 +208,7 @@ typedef struct _POWER_STATE_HANDLER {
 } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
 
 typedef NTSTATUS
-(STDCALL*PENTER_STATE_NOTIFY_HANDLER)(
+(NTAPI*PENTER_STATE_NOTIFY_HANDLER)(
   IN POWER_STATE_HANDLER_TYPE  State,
   IN PVOID  Context,
   IN BOOLEAN  Entering);
@@ -112,7 +218,7 @@ typedef struct _POWER_STATE_NOTIFY_HANDLER {
        PVOID  Context;
 } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
 DDKAPI
 NtPowerInformation(
@@ -154,63 +260,114 @@ typedef struct _PROCESSOR_STATE_HANDLER2 {
        PROCESSOR_PERF_LEVEL  PerfLevel[1];
 } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtSetThreadExecutionState(
   IN EXECUTION_STATE  esFlags,
   OUT EXECUTION_STATE  *PreviousFlags);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtRequestWakeupLatency(
   IN LATENCY_TIME  latency);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtInitiatePowerAction(
   IN POWER_ACTION  SystemAction,
   IN SYSTEM_POWER_STATE  MinSystemState,
   IN ULONG  Flags,
   IN BOOLEAN  Asynchronous);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtSetSystemPowerState(
   IN POWER_ACTION SystemAction,
   IN SYSTEM_POWER_STATE MinSystemState,
   IN ULONG Flags);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtGetDevicePowerState(
   IN HANDLE  Device,
   OUT DEVICE_POWER_STATE  *State);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtCancelDeviceWakeupRequest(
   IN HANDLE  Device);
 
-NTOSAPI
+NTSYSCALLAPI
 BOOLEAN
-DDKAPI
+NTAPI
 NtIsSystemResumeAutomatic(
   VOID);
 
-NTOSAPI
+NTSYSCALLAPI
 NTSTATUS
-DDKAPI
+NTAPI
 NtRequestDeviceWakeup(
   IN HANDLE  Device);
 
 #define WINLOGON_LOCK_ON_SLEEP            0x00000001
 
+typedef struct {
+    BOOLEAN             PowerButtonPresent;
+    BOOLEAN             SleepButtonPresent;
+    BOOLEAN             LidPresent;
+    BOOLEAN             SystemS1;
+    BOOLEAN             SystemS2;
+    BOOLEAN             SystemS3;
+    BOOLEAN             SystemS4;
+    BOOLEAN             SystemS5;
+    BOOLEAN             HiberFilePresent;
+    BOOLEAN             FullWake;
+    BOOLEAN             VideoDimPresent;
+    BOOLEAN             ApmPresent;
+    BOOLEAN             UpsPresent;
+    BOOLEAN             ThermalControl;
+    BOOLEAN             ProcessorThrottle;
+    UCHAR               ProcessorMinThrottle;
+#if (NTDDI_VERSION < NTDDI_WINXP)
+    UCHAR               ProcessorThrottleScale;
+    UCHAR               spare2[4];
+#else
+    UCHAR               ProcessorMaxThrottle;
+    BOOLEAN             FastSystemS4;
+    UCHAR               spare2[3];
+#endif // (NTDDI_VERSION < NTDDI_WINXP)
+    BOOLEAN             DiskSpinDown;
+    UCHAR               spare3[8];
+    BOOLEAN             SystemBatteriesPresent;
+    BOOLEAN             BatteriesAreShortTerm;
+    BATTERY_REPORTING_SCALE BatteryScale[3];
+    SYSTEM_POWER_STATE  AcOnLineWake;
+    SYSTEM_POWER_STATE  SoftLidWake;
+    SYSTEM_POWER_STATE  RtcWake;
+    SYSTEM_POWER_STATE  MinDeviceWakeState;
+    SYSTEM_POWER_STATE  DefaultLowLatencyWake;
+} SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
+
+typedef struct {
+    BOOLEAN             AcOnLine;
+    BOOLEAN             BatteryPresent;
+    BOOLEAN             Charging;
+    BOOLEAN             Discharging;
+    BOOLEAN             Spare1[4];
+    ULONG               MaxCapacity;
+    ULONG               RemainingCapacity;
+    ULONG               Rate;
+    ULONG               EstimatedTime;
+    ULONG               DefaultAlert1;
+    ULONG               DefaultAlert2;
+} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
+
 typedef struct _PROCESSOR_POWER_INFORMATION {
   ULONG  Number;
   ULONG  MaxMhz;
@@ -220,6 +377,39 @@ typedef struct _PROCESSOR_POWER_INFORMATION {
   ULONG  CurrentIdleState;
 } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
 
+typedef struct _POWER_ACTION_POLICY {
+    POWER_ACTION Action;
+    ULONG Flags;
+    ULONG EventCode;
+} POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
+
+/* POWER_ACTION_POLICY.Flags constants */
+#define POWER_ACTION_QUERY_ALLOWED        0x00000001
+#define POWER_ACTION_UI_ALLOWED           0x00000002
+#define POWER_ACTION_OVERRIDE_APPS        0x00000004
+#define POWER_ACTION_LIGHTEST_FIRST       0x10000000
+#define POWER_ACTION_LOCK_CONSOLE         0x20000000
+#define POWER_ACTION_DISABLE_WAKES        0x40000000
+#define POWER_ACTION_CRITICAL             0x80000000
+
+/* POWER_ACTION_POLICY.EventCode constants */
+#define POWER_LEVEL_USER_NOTIFY_TEXT      0x00000001
+#define POWER_LEVEL_USER_NOTIFY_SOUND     0x00000002
+#define POWER_LEVEL_USER_NOTIFY_EXEC      0x00000004
+#define POWER_USER_NOTIFY_BUTTON          0x00000008
+#define POWER_USER_NOTIFY_SHUTDOWN        0x00000010
+#define POWER_FORCE_TRIGGER_RESET         0x80000000
+
+#define DISCHARGE_POLICY_CRITICAL      0
+#define DISCHARGE_POLICY_LOW           1
+#define NUM_DISCHARGE_POLICIES         4
+
+#define PO_THROTTLE_NONE       0
+#define PO_THROTTLE_CONSTANT   1
+#define PO_THROTTLE_DEGRADE    2
+#define PO_THROTTLE_ADAPTIVE   3
+#define PO_THROTTLE_MAXIMUM    4
+
 #ifdef __cplusplus
 }
 #endif