powrprof.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:8k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************
  2. *                                                                             *
  3. * powrprof.h - - Interface for powrprof.dll, the power policy applicator      *
  4. *                                                                             *
  5. * Version 1.0                                                                 *
  6. *                                                                             *
  7. * Copyright (c) Microsoft Corporation. All rights reserved.                   *
  8. *                                                                             *
  9. *****************************************************************************/
  10. // Define the following to debug batmeter on machines with no battery support.
  11. //#define SIM_BATTERY 1
  12. #define CURRENT_REVISION 1
  13. #define STRSIZE(psz) ((lstrlen(psz) + 1) * sizeof(TCHAR))
  14. #define MAX_NAME_LEN  32    // Max length of name in characters.
  15. #define MAX_NAME_SIZE (MAX_NAME_LEN +1) * sizeof(TCHAR)
  16. #define MAX_DESC_LEN  512   // Max length of description in characters.
  17. #define MAX_DESC_SIZE (MAX_DESC_LEN +1) * sizeof(TCHAR)
  18. #define SEMAPHORE_TIMEOUT  10000
  19. #define NUM_DEC_DIGITS 10+1+1       // 10 digits + NUll and sign.
  20. #define SIZE_DEC_DIGITS (10+1+1) * sizeof(TCHAR)
  21. // Registry storage structures for the GLOBAL_POWER_POLICY data. There are two
  22. // structures, GLOBAL_MACHINE_POWER_POLICY and GLOBAL_USER_POWER_POLICY. the
  23. // GLOBAL_MACHINE_POWER_POLICY stores per machine data for which there is no UI.
  24. // GLOBAL_USER_POWER_POLICY stores the per user data.
  25. typedef struct _GLOBAL_MACHINE_POWER_POLICY{
  26.     ULONG                   Revision;
  27.     SYSTEM_POWER_STATE      LidOpenWakeAc;
  28.     SYSTEM_POWER_STATE      LidOpenWakeDc;
  29.     ULONG                   BroadcastCapacityResolution;
  30. } GLOBAL_MACHINE_POWER_POLICY, *PGLOBAL_MACHINE_POWER_POLICY;
  31. typedef struct _GLOBAL_USER_POWER_POLICY{
  32.     ULONG                   Revision;
  33.     POWER_ACTION_POLICY     PowerButtonAc;
  34.     POWER_ACTION_POLICY     PowerButtonDc;
  35.     POWER_ACTION_POLICY     SleepButtonAc;
  36.     POWER_ACTION_POLICY     SleepButtonDc;
  37.     POWER_ACTION_POLICY     LidCloseAc;
  38.     POWER_ACTION_POLICY     LidCloseDc;
  39.     SYSTEM_POWER_LEVEL      DischargePolicy[NUM_DISCHARGE_POLICIES];
  40.     ULONG                   GlobalFlags;
  41. } GLOBAL_USER_POWER_POLICY, *PGLOBAL_USER_POWER_POLICY;
  42. // Structure to manage global power policies at the user level. This structure
  43. // contains data which is common across all power policy profiles.
  44. typedef struct _GLOBAL_POWER_POLICY{
  45.     GLOBAL_USER_POWER_POLICY    user;
  46.     GLOBAL_MACHINE_POWER_POLICY mach;
  47. } GLOBAL_POWER_POLICY, *PGLOBAL_POWER_POLICY;
  48. // Registry storage structures for the POWER_POLICY data. There are three
  49. // structures, MACHINE_POWER_POLICY, MACHINE_PROCESSOR_POWER_POLICY and USER_POWER_POLICY. the
  50. // MACHINE_POWER_POLICY stores per machine data for which there is no UI.
  51. // USER_POWER_POLICY stores the per user data.
  52. typedef struct _MACHINE_POWER_POLICY{
  53.     ULONG                   Revision;       // 1
  54.     // meaning of power action "sleep"
  55.     SYSTEM_POWER_STATE      MinSleepAc;
  56.     SYSTEM_POWER_STATE      MinSleepDc;
  57.     SYSTEM_POWER_STATE      ReducedLatencySleepAc;
  58.     SYSTEM_POWER_STATE      ReducedLatencySleepDc;
  59.     // parameters for dozing
  60.     ULONG                   DozeTimeoutAc;
  61.     ULONG                   DozeTimeoutDc;
  62.     ULONG                   DozeS4TimeoutAc;
  63.     ULONG                   DozeS4TimeoutDc;
  64.     // processor policies
  65.     UCHAR                   MinThrottleAc;
  66.     UCHAR                   MinThrottleDc;
  67.     UCHAR                   pad1[2];
  68.     POWER_ACTION_POLICY     OverThrottledAc;
  69.     POWER_ACTION_POLICY     OverThrottledDc;
  70. } MACHINE_POWER_POLICY, *PMACHINE_POWER_POLICY;
  71. typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
  72.     ULONG                   Revision;       // 1
  73.     
  74.     PROCESSOR_POWER_POLICY  ProcessorPolicyAc;    
  75.     PROCESSOR_POWER_POLICY  ProcessorPolicyDc;    
  76. } MACHINE_PROCESSOR_POWER_POLICY, *PMACHINE_PROCESSOR_POWER_POLICY;
  77. typedef struct _USER_POWER_POLICY{
  78.     ULONG                   Revision;       // 1
  79.     // "system idle" detection
  80.     POWER_ACTION_POLICY     IdleAc;
  81.     POWER_ACTION_POLICY     IdleDc;
  82.     ULONG                   IdleTimeoutAc;
  83.     ULONG                   IdleTimeoutDc;
  84.     UCHAR                   IdleSensitivityAc;
  85.     UCHAR                   IdleSensitivityDc;
  86.     
  87.     // Throttling Policy
  88.     UCHAR                   ThrottlePolicyAc;
  89.     UCHAR                   ThrottlePolicyDc;
  90.     // meaning of power action "sleep"
  91.     SYSTEM_POWER_STATE      MaxSleepAc;
  92.     SYSTEM_POWER_STATE      MaxSleepDc;
  93.     // For future use
  94.     ULONG                   Reserved[2];
  95.     // video policies
  96.     ULONG                   VideoTimeoutAc;
  97.     ULONG                   VideoTimeoutDc;
  98.     // hard disk policies
  99.     ULONG                   SpindownTimeoutAc;
  100.     ULONG                   SpindownTimeoutDc;
  101.     // processor policies
  102.     BOOLEAN                 OptimizeForPowerAc;
  103.     BOOLEAN                 OptimizeForPowerDc;
  104.     UCHAR                   FanThrottleToleranceAc;
  105.     UCHAR                   FanThrottleToleranceDc;
  106.     UCHAR                   ForcedThrottleAc;
  107.     UCHAR                   ForcedThrottleDc;
  108.     
  109. } USER_POWER_POLICY, *PUSER_POWER_POLICY;
  110. // Structure to manage power policies at the user level. This structure
  111. // contains data which is unique across power policy profiles.
  112. typedef struct _POWER_POLICY{
  113.     USER_POWER_POLICY       user;
  114.     MACHINE_POWER_POLICY    mach;
  115. } POWER_POLICY, *PPOWER_POLICY;
  116. // Constants for GlobalFlags
  117. #define EnableSysTrayBatteryMeter   0x01
  118. #define EnableMultiBatteryDisplay   0x02
  119. #define EnablePasswordLogon         0x04
  120. #define EnableWakeOnRing            0x08
  121. #define EnableVideoDimDisplay       0x10
  122. // This constant is passed as a uiID to WritePwrScheme.
  123. #define NEWSCHEME (UINT)-1
  124. // Prototype for EnumPwrSchemes callback proceedures.
  125. typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, LPARAM);
  126. typedef BOOLEAN (CALLBACK* PFNNTINITIATEPWRACTION)(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN);
  127. // Public function prototypes
  128. BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT, PUINT);
  129. BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM);
  130. BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
  131. BOOLEAN WINAPI ReadPwrScheme(UINT, PPOWER_POLICY);
  132. BOOLEAN WINAPI WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY);
  133. BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
  134. BOOLEAN WINAPI DeletePwrScheme(UINT);
  135. BOOLEAN WINAPI GetActivePwrScheme(PUINT);
  136. BOOLEAN WINAPI SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
  137. BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
  138. BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
  139. BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
  140. BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
  141. BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
  142. BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
  143. BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
  144. BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
  145. BOOLEAN WINAPI ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
  146. BOOLEAN WINAPI WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
  147. #ifndef NT_SUCCESS
  148. #define NTSTATUS LONG
  149. #define _OVERRIDE_NTSTATUS_
  150. #endif
  151. NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG);
  152. #ifdef _OVERRIDE_NTSTATUS_
  153. #undef NTSTATUS
  154. #endif
  155. void WINAPI LoadCurrentPwrScheme(HWND hwnd, HINSTANCE hAppInstance, LPSTR lpszCmdLine, int nCmdShow);
  156. void WINAPI MergeLegacyPwrScheme(HWND hwnd, HINSTANCE hAppInstance, LPSTR lpszCmdLine, int nCmdShow);