home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / ntpoapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  10.7 KB  |  426 lines

  1. /*
  2.  * ntpoapi.h
  3.  *
  4.  * APIs for power management.
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __NTPOAPI_H
  24. #define __NTPOAPI_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #pragma pack(push,4)
  35.  
  36. #include "ntddk.h"
  37. #include "batclass.h"
  38.  
  39.  
  40. #define ES_SYSTEM_REQUIRED                0x00000001
  41. #define ES_DISPLAY_REQUIRED               0x00000002
  42. #define ES_USER_PRESENT                   0x00000004
  43. #define ES_CONTINUOUS                     0x80000000
  44.  
  45. typedef enum _LATENCY_TIME {
  46.     LT_DONT_CARE,
  47.     LT_LOWEST_LATENCY
  48. } LATENCY_TIME, *PLATENCY_TIME;
  49.  
  50. #define POWER_SYSTEM_MAXIMUM              PowerSystemMaximum
  51.  
  52. typedef enum _POWER_INFORMATION_LEVEL {
  53.     SystemPowerPolicyAc,
  54.     SystemPowerPolicyDc,
  55.     VerifySystemPolicyAc,
  56.     VerifySystemPolicyDc,
  57.     SystemPowerCapabilities,
  58.     SystemBatteryState,
  59.     SystemPowerStateHandler,
  60.     ProcessorStateHandler,
  61.     SystemPowerPolicyCurrent,
  62.     AdministratorPowerPolicy,
  63.     SystemReserveHiberFile,
  64.     ProcessorInformation,
  65.     SystemPowerInformation,
  66.     ProcessorStateHandler2,
  67.     LastWakeTime,
  68.     LastSleepTime,
  69.     SystemExecutionState,
  70.     SystemPowerStateNotifyHandler,
  71.     ProcessorPowerPolicyAc,
  72.     ProcessorPowerPolicyDc,
  73.     VerifyProcessorPowerPolicyAc,
  74.     VerifyProcessorPowerPolicyDc,
  75.     ProcessorPowerPolicyCurrent
  76. } POWER_INFORMATION_LEVEL;
  77.  
  78. #define POWER_PERF_SCALE                  100
  79. #define PERF_LEVEL_TO_PERCENT(x)          (((x) * 1000) / (POWER_PERF_SCALE * 10))
  80. #define PERCENT_TO_PERF_LEVEL(x)          (((x) * POWER_PERF_SCALE * 10) / 1000)
  81.  
  82. typedef struct _PROCESSOR_IDLE_TIMES {
  83.     ULONGLONG  StartTime;
  84.     ULONGLONG  EndTime;
  85.     ULONG  IdleHandlerReserved[4];
  86. } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
  87.  
  88. typedef BOOLEAN DDKFASTAPI
  89. (*PPROCESSOR_IDLE_HANDLER)(
  90.   IN OUT PPROCESSOR_IDLE_TIMES IdleTimes);
  91.  
  92. typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
  93.   ULONG  HardwareLatency;
  94.   PPROCESSOR_IDLE_HANDLER  Handler;
  95. } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
  96.  
  97. typedef VOID DDKFASTAPI
  98. (*PSET_PROCESSOR_THROTTLE)(
  99.   IN UCHAR  Throttle);
  100.  
  101. typedef NTSTATUS DDKFASTAPI
  102. (*PSET_PROCESSOR_THROTTLE2)(
  103.   IN UCHAR  Throttle);
  104.  
  105. #define MAX_IDLE_HANDLERS                 3
  106.  
  107. typedef struct _PROCESSOR_STATE_HANDLER {
  108.     UCHAR  ThrottleScale;
  109.     BOOLEAN  ThrottleOnIdle;
  110.     PSET_PROCESSOR_THROTTLE  SetThrottle;
  111.     ULONG  NumIdleHandlers;
  112.     PROCESSOR_IDLE_HANDLER_INFO  IdleHandler[MAX_IDLE_HANDLERS];
  113. } PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER;
  114.  
  115. typedef enum _POWER_STATE_HANDLER_TYPE {
  116.     PowerStateSleeping1,
  117.     PowerStateSleeping2,
  118.     PowerStateSleeping3,
  119.     PowerStateSleeping4,
  120.     PowerStateSleeping4Firmware,
  121.     PowerStateShutdownReset,
  122.     PowerStateShutdownOff,
  123.     PowerStateMaximum
  124. } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
  125.  
  126. typedef NTSTATUS DDKAPI
  127. (*PENTER_STATE_SYSTEM_HANDLER)(
  128.   IN PVOID  SystemContext);
  129.  
  130. typedef NTSTATUS DDKAPI
  131. (*PENTER_STATE_HANDLER)(
  132.   IN PVOID  Context,
  133.   IN PENTER_STATE_SYSTEM_HANDLER  SystemHandler  OPTIONAL,
  134.   IN PVOID  SystemContext,
  135.   IN LONG  NumberProcessors,
  136.   IN VOLATILE PLONG  Number);
  137.  
  138. typedef struct _POWER_STATE_HANDLER {
  139.     POWER_STATE_HANDLER_TYPE  Type;
  140.     BOOLEAN  RtcWake;
  141.     UCHAR  Spare[3];
  142.     PENTER_STATE_HANDLER  Handler;
  143.     PVOID  Context;
  144. } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
  145.  
  146. typedef NTSTATUS STDCALL
  147. (*PENTER_STATE_NOTIFY_HANDLER)(
  148.   IN POWER_STATE_HANDLER_TYPE  State,
  149.   IN PVOID  Context,
  150.   IN BOOLEAN  Entering);
  151.  
  152. typedef struct _POWER_STATE_NOTIFY_HANDLER {
  153.     PENTER_STATE_NOTIFY_HANDLER  Handler;
  154.     PVOID  Context;
  155. } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
  156.  
  157. NTOSAPI
  158. NTSTATUS
  159. DDKAPI
  160. NtPowerInformation(
  161.   IN POWER_INFORMATION_LEVEL  InformationLevel,
  162.   IN PVOID  InputBuffer OPTIONAL,
  163.   IN ULONG  InputBufferLength,
  164.   OUT PVOID  OutputBuffer OPTIONAL,
  165.   IN ULONG  OutputBufferLength);
  166.  
  167. #define PROCESSOR_STATE_TYPE_PERFORMANCE  1
  168. #define PROCESSOR_STATE_TYPE_THROTTLE     2
  169.  
  170. typedef struct _PROCESSOR_PERF_LEVEL {
  171.   UCHAR  PercentFrequency;
  172.   UCHAR  Reserved;
  173.   USHORT  Flags;
  174. } PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL;
  175.  
  176. typedef struct _PROCESSOR_PERF_STATE {
  177.   UCHAR  PercentFrequency;
  178.   UCHAR  MinCapacity;
  179.   USHORT  Power;
  180.   UCHAR  IncreaseLevel;
  181.   UCHAR  DecreaseLevel;
  182.   USHORT  Flags;
  183.   ULONG  IncreaseTime;
  184.   ULONG  DecreaseTime;
  185.   ULONG  IncreaseCount;
  186.   ULONG  DecreaseCount;
  187.   ULONGLONG  PerformanceTime;
  188. } PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
  189.  
  190. typedef struct _PROCESSOR_STATE_HANDLER2 {
  191.     ULONG  NumIdleHandlers;
  192.     PROCESSOR_IDLE_HANDLER_INFO  IdleHandler[MAX_IDLE_HANDLERS];
  193.     PSET_PROCESSOR_THROTTLE2  SetPerfLevel;
  194.     ULONG  HardwareLatency;
  195.     UCHAR  NumPerfStates;
  196.     PROCESSOR_PERF_LEVEL  PerfLevel[1];
  197. } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
  198.  
  199. /* POWER_ACTION_POLICY.Flags constants */
  200. #define POWER_ACTION_QUERY_ALLOWED        0x00000001
  201. #define POWER_ACTION_UI_ALLOWED           0x00000002
  202. #define POWER_ACTION_OVERRIDE_APPS        0x00000004
  203. #define POWER_ACTION_LIGHTEST_FIRST       0x10000000
  204. #define POWER_ACTION_LOCK_CONSOLE         0x20000000
  205. #define POWER_ACTION_DISABLE_WAKES        0x40000000
  206. #define POWER_ACTION_CRITICAL             0x80000000
  207.  
  208. /* POWER_ACTION_POLICY.EventCode constants */
  209. #define POWER_LEVEL_USER_NOTIFY_TEXT      0x00000001
  210. #define POWER_LEVEL_USER_NOTIFY_SOUND     0x00000002
  211. #define POWER_LEVEL_USER_NOTIFY_EXEC      0x00000004
  212. #define POWER_USER_NOTIFY_BUTTON          0x00000008
  213. #define POWER_USER_NOTIFY_SHUTDOWN        0x00000010
  214. #define POWER_FORCE_TRIGGER_RESET         0x80000000
  215.  
  216. typedef struct _POWER_ACTION_POLICY {
  217.     POWER_ACTION  Action;
  218.     ULONG  Flags;
  219.     ULONG  EventCode;
  220. } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
  221.  
  222. typedef struct _SYSTEM_POWER_LEVEL {
  223.     BOOLEAN  Enable;
  224.     UCHAR  Spare[3];
  225.     ULONG  BatteryLevel;
  226.     POWER_ACTION_POLICY  PowerPolicy;
  227.     SYSTEM_POWER_STATE  MinSystemState;
  228. } SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL;
  229.  
  230. #define DISCHARGE_POLICY_CRITICAL         0
  231. #define DISCHARGE_POLICY_LOW              1
  232. #define NUM_DISCHARGE_POLICIES            4
  233.  
  234. #define PO_THROTTLE_NONE                  0
  235. #define PO_THROTTLE_CONSTANT              1
  236. #define PO_THROTTLE_DEGRADE               2
  237. #define PO_THROTTLE_ADAPTIVE              3
  238. #define PO_THROTTLE_MAXIMUM               4
  239.  
  240. typedef struct _SYSTEM_POWER_POLICY {
  241.     ULONG  Revision;
  242.     POWER_ACTION_POLICY  PowerButton;
  243.     POWER_ACTION_POLICY  SleepButton;
  244.     POWER_ACTION_POLICY  LidClose;
  245.     SYSTEM_POWER_STATE  LidOpenWake;
  246.     ULONG  Reserved;
  247.     POWER_ACTION_POLICY  Idle;
  248.     ULONG  IdleTimeout;
  249.     UCHAR  IdleSensitivity;
  250.     UCHAR  DynamicThrottle;
  251.     UCHAR  Spare2[2];
  252.     SYSTEM_POWER_STATE  MinSleep;
  253.     SYSTEM_POWER_STATE  MaxSleep;
  254.     SYSTEM_POWER_STATE  ReducedLatencySleep;
  255.     ULONG  WinLogonFlags;
  256.     ULONG  Spare3;
  257.     ULONG  DozeS4Timeout;
  258.     ULONG  BroadcastCapacityResolution;
  259.     SYSTEM_POWER_LEVEL  DischargePolicy[NUM_DISCHARGE_POLICIES];
  260.     ULONG  VideoTimeout;
  261.     BOOLEAN  VideoDimDisplay;
  262.     ULONG  VideoReserved[3];
  263.     ULONG  SpindownTimeout;
  264.     BOOLEAN  OptimizeForPower;
  265.     UCHAR  FanThrottleTolerance;
  266.     UCHAR  ForcedThrottle;
  267.     UCHAR  MinThrottle;
  268.     POWER_ACTION_POLICY  OverThrottled;
  269. } SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY;
  270.  
  271. typedef struct _PROCESSOR_POWER_POLICY_INFO {
  272.     ULONG  TimeCheck;
  273.     ULONG  DemoteLimit;
  274.     ULONG  PromoteLimit;
  275.     UCHAR  DemotePercent;
  276.     UCHAR  PromotePercent;
  277.     UCHAR  Spare[2];
  278.     ULONG  AllowDemotion : 1;
  279.     ULONG  AllowPromotion : 1;
  280.     ULONG  Reserved : 30;
  281. } PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO;
  282.  
  283. typedef struct _PROCESSOR_POWER_POLICY {
  284.     ULONG  Revision;
  285.     UCHAR  DynamicThrottle;
  286.     UCHAR  Spare[3];
  287.     ULONG  Reserved;
  288.     ULONG  PolicyCount;
  289.     PROCESSOR_POWER_POLICY_INFO  Policy[3];
  290. } PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY;
  291.  
  292. typedef struct _ADMINISTRATOR_POWER_POLICY {
  293.   SYSTEM_POWER_STATE  MinSleep;
  294.   SYSTEM_POWER_STATE  MaxSleep;
  295.   ULONG  MinVideoTimeout;
  296.   ULONG  MaxVideoTimeout;
  297.   ULONG  MinSpindownTimeout;
  298.   ULONG  MaxSpindownTimeout;
  299. } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
  300.  
  301. NTOSAPI
  302. NTSTATUS
  303. DDKAPI
  304. NtSetThreadExecutionState(
  305.   IN EXECUTION_STATE  esFlags,
  306.   OUT EXECUTION_STATE  *PreviousFlags);
  307.  
  308. NTOSAPI
  309. NTSTATUS
  310. DDKAPI
  311. NtRequestWakeupLatency(
  312.   IN LATENCY_TIME  latency);
  313.  
  314. NTOSAPI
  315. NTSTATUS
  316. DDKAPI
  317. NtInitiatePowerAction(
  318.   IN POWER_ACTION  SystemAction,
  319.   IN SYSTEM_POWER_STATE  MinSystemState,
  320.   IN ULONG  Flags,
  321.   IN BOOLEAN  Asynchronous);
  322.  
  323. NTOSAPI
  324. NTSTATUS
  325. DDKAPI
  326. NtSetSystemPowerState(
  327.   IN POWER_ACTION SystemAction,
  328.   IN SYSTEM_POWER_STATE MinSystemState,
  329.   IN ULONG Flags);
  330.  
  331. NTOSAPI
  332. NTSTATUS
  333. DDKAPI
  334. NtGetDevicePowerState(
  335.   IN HANDLE  Device,
  336.   OUT DEVICE_POWER_STATE  *State);
  337.  
  338. NTOSAPI
  339. NTSTATUS
  340. DDKAPI
  341. NtCancelDeviceWakeupRequest(
  342.   IN HANDLE  Device);
  343.  
  344. NTOSAPI
  345. BOOLEAN
  346. DDKAPI
  347. NtIsSystemResumeAutomatic(
  348.   VOID);
  349.  
  350. NTOSAPI
  351. NTSTATUS
  352. DDKAPI
  353. NtRequestDeviceWakeup(
  354.   IN HANDLE  Device);
  355.  
  356. #define WINLOGON_LOCK_ON_SLEEP            0x00000001
  357.  
  358. typedef struct _SYSTEM_POWER_INFORMATION {
  359.   ULONG  MaxIdlenessAllowed;
  360.   ULONG  Idleness;
  361.   ULONG  TimeRemaining;
  362.   UCHAR  CoolingMode;
  363. } SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
  364.  
  365. typedef struct _PROCESSOR_POWER_INFORMATION {
  366.   ULONG  Number;
  367.   ULONG  MaxMhz;
  368.   ULONG  CurrentMhz;
  369.   ULONG  MhzLimit;
  370.   ULONG  MaxIdleState;
  371.   ULONG  CurrentIdleState;
  372. } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
  373.  
  374. typedef struct _SYSTEM_BATTERY_STATE {
  375.   BOOLEAN  AcOnLine;
  376.   BOOLEAN  BatteryPresent;
  377.   BOOLEAN  Charging;
  378.   BOOLEAN  Discharging;
  379.   BOOLEAN  Spare1[4];
  380.   ULONG  MaxCapacity;
  381.   ULONG  RemainingCapacity;
  382.   ULONG  Rate;
  383.   ULONG  EstimatedTime;
  384.   ULONG  DefaultAlert1;
  385.   ULONG  DefaultAlert2;
  386. } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
  387.  
  388. typedef struct _SYSTEM_POWER_CAPABILITIES {
  389.   BOOLEAN  PowerButtonPresent;
  390.   BOOLEAN  SleepButtonPresent;
  391.   BOOLEAN  LidPresent;
  392.   BOOLEAN  SystemS1;
  393.   BOOLEAN  SystemS2;
  394.   BOOLEAN  SystemS3;
  395.   BOOLEAN  SystemS4;
  396.   BOOLEAN  SystemS5;
  397.   BOOLEAN  HiberFilePresent;
  398.   BOOLEAN  FullWake;
  399.   BOOLEAN  VideoDimPresent;
  400.   BOOLEAN  ApmPresent;
  401.   BOOLEAN  UpsPresent;
  402.   BOOLEAN  ThermalControl;
  403.   BOOLEAN  ProcessorThrottle;
  404.   UCHAR  ProcessorMinThrottle;
  405.   UCHAR  ProcessorMaxThrottle;
  406.   UCHAR  spare2[4];
  407.   BOOLEAN  DiskSpinDown;
  408.   UCHAR  spare3[8];
  409.   BOOLEAN  SystemBatteriesPresent;
  410.   BOOLEAN  BatteriesAreShortTerm;
  411.   BATTERY_REPORTING_SCALE  BatteryScale[3];
  412.   SYSTEM_POWER_STATE  AcOnLineWake;
  413.   SYSTEM_POWER_STATE  SoftLidWake;
  414.   SYSTEM_POWER_STATE  RtcWake;
  415.   SYSTEM_POWER_STATE  MinDeviceWakeState;
  416.   SYSTEM_POWER_STATE  DefaultLowLatencyWake;
  417. } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
  418.  
  419. #pragma pack(pop)
  420.  
  421. #ifdef __cplusplus
  422. }
  423. #endif
  424.  
  425. #endif /* __NTPOAPI_H */
  426.