Hex Artifact Content

Not logged in

Artifact db10623ed83eba41cc472ab97647c9bdd6b4a6b0:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 70 6f 77 72 70 72            powrpr
0070: 6f 66 2e 64 20 20 20 20 20 20 20 20 20 20 20 20  of.d            
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66      Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77  rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20  s headers       
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61          by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20  rt Gordon       
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69          Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69  nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a          *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32  **/.module win32
02f0: 2e 70 6f 77 72 70 72 6f 66 3b 0a 70 72 61 67 6d  .powrprof;.pragm
0300: 61 28 6c 69 62 2c 20 22 70 6f 77 72 70 72 6f 66  a(lib, "powrprof
0310: 2e 6c 69 62 22 29 3b 0a 0a 70 72 69 76 61 74 65  .lib");..private
0320: 20 69 6d 70 6f 72 74 20 77 69 6e 33 32 2e 77 69   import win32.wi
0330: 6e 64 65 66 3b 0a 70 72 69 76 61 74 65 20 69 6d  ndef;.private im
0340: 70 6f 72 74 20 77 69 6e 33 32 2e 6e 74 64 65 66  port win32.ntdef
0350: 3b 0a 0a 2f 2f 20 46 49 58 4d 45 3a 20 6c 6f 6f  ;..// FIXME: loo
0360: 6b 20 75 70 20 57 69 6e 64 6f 77 73 20 76 65 72  k up Windows ver
0370: 73 69 6f 6e 20 73 75 70 70 6f 72 74 0a 0a 63 6f  sion support..co
0380: 6e 73 74 20 55 4c 4f 4e 47 0a 09 45 6e 61 62 6c  nst ULONG..Enabl
0390: 65 53 79 73 54 72 61 79 42 61 74 74 65 72 79 4d  eSysTrayBatteryM
03a0: 65 74 65 72 20 3d 20 20 31 2c 0a 09 45 6e 61 62  eter =  1,..Enab
03b0: 6c 65 4d 75 6c 74 69 42 61 74 74 65 72 79 44 69  leMultiBatteryDi
03c0: 73 70 6c 61 79 20 3d 20 20 32 2c 0a 09 45 6e 61  splay =  2,..Ena
03d0: 62 6c 65 50 61 73 73 77 6f 72 64 4c 6f 67 6f 6e  blePasswordLogon
03e0: 20 20 20 20 20 20 20 3d 20 20 34 2c 0a 09 45 6e         =  4,..En
03f0: 61 62 6c 65 57 61 6b 65 4f 6e 52 69 6e 67 20 20  ableWakeOnRing  
0400: 20 20 20 20 20 20 20 20 3d 20 20 38 2c 0a 09 45          =  8,..E
0410: 6e 61 62 6c 65 56 69 64 65 6f 44 69 6d 44 69 73  nableVideoDimDis
0420: 70 6c 61 79 20 20 20 20 20 3d 20 31 36 3b 0a 0a  play     = 16;..
0430: 63 6f 6e 73 74 20 55 49 4e 54 20 4e 45 57 53 43  const UINT NEWSC
0440: 48 45 4d 45 20 3d 20 2d 31 3b 0a 0a 73 74 72 75  HEME = -1;..stru
0450: 63 74 20 47 4c 4f 42 41 4c 5f 4d 41 43 48 49 4e  ct GLOBAL_MACHIN
0460: 45 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20 7b  E_POWER_POLICY {
0470: 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20  ..ULONG         
0480: 20 20 20 20 20 52 65 76 69 73 69 6f 6e 3b 0a 09       Revision;..
0490: 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41  SYSTEM_POWER_STA
04a0: 54 45 20 4c 69 64 4f 70 65 6e 57 61 6b 65 41 63  TE LidOpenWakeAc
04b0: 3b 0a 09 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f  ;..SYSTEM_POWER_
04c0: 53 54 41 54 45 20 4c 69 64 4f 70 65 6e 57 61 6b  STATE LidOpenWak
04d0: 65 44 63 3b 0a 09 55 4c 4f 4e 47 20 20 20 20 20  eDc;..ULONG     
04e0: 20 20 20 20 20 20 20 20 20 42 72 6f 61 64 63 61           Broadca
04f0: 73 74 43 61 70 61 63 69 74 79 52 65 73 6f 6c 75  stCapacityResolu
0500: 74 69 6f 6e 3b 0a 7d 0a 61 6c 69 61 73 20 47 4c  tion;.}.alias GL
0510: 4f 42 41 4c 5f 4d 41 43 48 49 4e 45 5f 50 4f 57  OBAL_MACHINE_POW
0520: 45 52 5f 50 4f 4c 49 43 59 2a 20 50 47 4c 4f 42  ER_POLICY* PGLOB
0530: 41 4c 5f 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52  AL_MACHINE_POWER
0540: 5f 50 4f 4c 49 43 59 3b 0a 0a 73 74 72 75 63 74  _POLICY;..struct
0550: 20 47 4c 4f 42 41 4c 5f 55 53 45 52 5f 50 4f 57   GLOBAL_USER_POW
0560: 45 52 5f 50 4f 4c 49 43 59 20 7b 0a 09 55 4c 4f  ER_POLICY {..ULO
0570: 4e 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NG              
0580: 20 52 65 76 69 73 69 6f 6e 3b 0a 09 50 4f 57 45   Revision;..POWE
0590: 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59 20  R_ACTION_POLICY 
05a0: 50 6f 77 65 72 42 75 74 74 6f 6e 41 63 3b 0a 09  PowerButtonAc;..
05b0: 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c  POWER_ACTION_POL
05c0: 49 43 59 20 50 6f 77 65 72 42 75 74 74 6f 6e 44  ICY PowerButtonD
05d0: 63 3b 0a 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e  c;..POWER_ACTION
05e0: 5f 50 4f 4c 49 43 59 20 53 6c 65 65 70 42 75 74  _POLICY SleepBut
05f0: 74 6f 6e 41 63 3b 0a 09 50 4f 57 45 52 5f 41 43  tonAc;..POWER_AC
0600: 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 53 6c 65 65  TION_POLICY Slee
0610: 70 42 75 74 74 6f 6e 44 63 3b 0a 09 50 4f 57 45  pButtonDc;..POWE
0620: 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59 20  R_ACTION_POLICY 
0630: 4c 69 64 43 6c 6f 73 65 41 63 3b 0a 09 50 4f 57  LidCloseAc;..POW
0640: 45 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59  ER_ACTION_POLICY
0650: 20 4c 69 64 43 6c 6f 73 65 44 63 3b 0a 09 53 59   LidCloseDc;..SY
0660: 53 54 45 4d 5f 50 4f 57 45 52 5f 4c 45 56 45 4c  STEM_POWER_LEVEL
0670: 5b 4e 55 4d 5f 44 49 53 43 48 41 52 47 45 5f 50  [NUM_DISCHARGE_P
0680: 4f 4c 49 43 49 45 53 5d 20 44 69 73 63 68 61 72  OLICIES] Dischar
0690: 67 65 50 6f 6c 69 63 79 3b 0a 09 55 4c 4f 4e 47  gePolicy;..ULONG
06a0: 20 47 6c 6f 62 61 6c 46 6c 61 67 73 3b 0a 7d 0a   GlobalFlags;.}.
06b0: 61 6c 69 61 73 20 47 4c 4f 42 41 4c 5f 55 53 45  alias GLOBAL_USE
06c0: 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 2a 20  R_POWER_POLICY* 
06d0: 50 47 4c 4f 42 41 4c 5f 55 53 45 52 5f 50 4f 57  PGLOBAL_USER_POW
06e0: 45 52 5f 50 4f 4c 49 43 59 3b 0a 0a 73 74 72 75  ER_POLICY;..stru
06f0: 63 74 20 47 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f  ct GLOBAL_POWER_
0700: 50 4f 4c 49 43 59 20 7b 0a 09 47 4c 4f 42 41 4c  POLICY {..GLOBAL
0710: 5f 55 53 45 52 5f 50 4f 57 45 52 5f 50 4f 4c 49  _USER_POWER_POLI
0720: 43 59 20 20 20 20 75 73 65 72 3b 0a 09 47 4c 4f  CY    user;..GLO
0730: 42 41 4c 5f 4d 41 43 48 49 4e 45 5f 50 4f 57 45  BAL_MACHINE_POWE
0740: 52 5f 50 4f 4c 49 43 59 20 6d 61 63 68 3b 0a 7d  R_POLICY mach;.}
0750: 0a 61 6c 69 61 73 20 47 4c 4f 42 41 4c 5f 50 4f  .alias GLOBAL_PO
0760: 57 45 52 5f 50 4f 4c 49 43 59 2a 20 50 47 4c 4f  WER_POLICY* PGLO
0770: 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59  BAL_POWER_POLICY
0780: 3b 0a 0a 73 74 72 75 63 74 20 4d 41 43 48 49 4e  ;..struct MACHIN
0790: 45 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20 7b  E_POWER_POLICY {
07a0: 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20  ..ULONG         
07b0: 20 20 20 20 20 20 52 65 76 69 73 69 6f 6e 3b 0a        Revision;.
07c0: 09 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54  .SYSTEM_POWER_ST
07d0: 41 54 45 20 20 4d 69 6e 53 6c 65 65 70 41 63 3b  ATE  MinSleepAc;
07e0: 0a 09 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f 53  ..SYSTEM_POWER_S
07f0: 54 41 54 45 20 20 4d 69 6e 53 6c 65 65 70 44 63  TATE  MinSleepDc
0800: 3b 0a 09 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f  ;..SYSTEM_POWER_
0810: 53 54 41 54 45 20 20 52 65 64 75 63 65 64 4c 61  STATE  ReducedLa
0820: 74 65 6e 63 79 53 6c 65 65 70 41 63 3b 0a 09 53  tencySleepAc;..S
0830: 59 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41 54  YSTEM_POWER_STAT
0840: 45 20 20 52 65 64 75 63 65 64 4c 61 74 65 6e 63  E  ReducedLatenc
0850: 79 53 6c 65 65 70 44 63 3b 0a 09 55 4c 4f 4e 47  ySleepDc;..ULONG
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
0870: 6f 7a 65 54 69 6d 65 6f 75 74 41 63 3b 0a 09 55  ozeTimeoutAc;..U
0880: 4c 4f 4e 47 20 20 20 20 20 20 20 20 20 20 20 20  LONG            
0890: 20 20 20 44 6f 7a 65 54 69 6d 65 6f 75 74 44 63     DozeTimeoutDc
08a0: 3b 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20 20 20  ;..ULONG        
08b0: 20 20 20 20 20 20 20 44 6f 7a 65 53 34 54 69 6d         DozeS4Tim
08c0: 65 6f 75 74 41 63 3b 0a 09 55 4c 4f 4e 47 20 20  eoutAc;..ULONG  
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 7a               Doz
08e0: 65 53 34 54 69 6d 65 6f 75 74 44 63 3b 0a 09 55  eS4TimeoutDc;..U
08f0: 43 48 41 52 20 20 20 20 20 20 20 20 20 20 20 20  CHAR            
0900: 20 20 20 4d 69 6e 54 68 72 6f 74 74 6c 65 41 63     MinThrottleAc
0910: 3b 0a 09 55 43 48 41 52 20 20 20 20 20 20 20 20  ;..UCHAR        
0920: 20 20 20 20 20 20 20 4d 69 6e 54 68 72 6f 74 74         MinThrott
0930: 6c 65 44 63 3b 0a 09 55 43 48 41 52 5b 32 5d 20  leDc;..UCHAR[2] 
0940: 20 20 20 20 20 20 20 20 20 20 20 70 61 64 31 3b             pad1;
0950: 0a 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f 50  ..POWER_ACTION_P
0960: 4f 4c 49 43 59 20 4f 76 65 72 54 68 72 6f 74 74  OLICY OverThrott
0970: 6c 65 64 41 63 3b 0a 09 50 4f 57 45 52 5f 41 43  ledAc;..POWER_AC
0980: 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 4f 76 65 72  TION_POLICY Over
0990: 54 68 72 6f 74 74 6c 65 64 44 63 3b 0a 7d 0a 61  ThrottledDc;.}.a
09a0: 6c 69 61 73 20 4d 41 43 48 49 4e 45 5f 50 4f 57  lias MACHINE_POW
09b0: 45 52 5f 50 4f 4c 49 43 59 2a 20 50 4d 41 43 48  ER_POLICY* PMACH
09c0: 49 4e 45 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59  INE_POWER_POLICY
09d0: 3b 0a 0a 73 74 72 75 63 74 20 4d 41 43 48 49 4e  ;..struct MACHIN
09e0: 45 5f 50 52 4f 43 45 53 53 4f 52 5f 50 4f 57 45  E_PROCESSOR_POWE
09f0: 52 5f 50 4f 4c 49 43 59 20 7b 0a 09 55 4c 4f 4e  R_POLICY {..ULON
0a00: 47 20 52 65 76 69 73 69 6f 6e 3b 0a 09 50 52 4f  G Revision;..PRO
0a10: 43 45 53 53 4f 52 5f 50 4f 57 45 52 5f 50 4f 4c  CESSOR_POWER_POL
0a20: 49 43 59 20 50 72 6f 63 65 73 73 6f 72 50 6f 6c  ICY ProcessorPol
0a30: 69 63 79 41 63 3b 0a 09 50 52 4f 43 45 53 53 4f  icyAc;..PROCESSO
0a40: 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20 50  R_POWER_POLICY P
0a50: 72 6f 63 65 73 73 6f 72 50 6f 6c 69 63 79 44 63  rocessorPolicyDc
0a60: 3b 0a 7d 0a 61 6c 69 61 73 20 4d 41 43 48 49 4e  ;.}.alias MACHIN
0a70: 45 5f 50 52 4f 43 45 53 53 4f 52 5f 50 4f 57 45  E_PROCESSOR_POWE
0a80: 52 5f 50 4f 4c 49 43 59 2a 20 50 4d 41 43 48 49  R_POLICY* PMACHI
0a90: 4e 45 5f 50 52 4f 43 45 53 53 4f 52 5f 50 4f 57  NE_PROCESSOR_POW
0aa0: 45 52 5f 50 4f 4c 49 43 59 3b 0a 0a 73 74 72 75  ER_POLICY;..stru
0ab0: 63 74 20 55 53 45 52 5f 50 4f 57 45 52 5f 50 4f  ct USER_POWER_PO
0ac0: 4c 49 43 59 20 7b 0a 20 20 20 55 4c 4f 4e 47 20  LICY {.   ULONG 
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
0ae0: 76 69 73 69 6f 6e 3b 0a 20 20 20 50 4f 57 45 52  vision;.   POWER
0af0: 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 49  _ACTION_POLICY I
0b00: 64 6c 65 41 63 3b 0a 20 20 20 50 4f 57 45 52 5f  dleAc;.   POWER_
0b10: 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 49 64  ACTION_POLICY Id
0b20: 6c 65 44 63 3b 0a 20 20 20 55 4c 4f 4e 47 20 20  leDc;.   ULONG  
0b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 64 6c               Idl
0b40: 65 54 69 6d 65 6f 75 74 41 63 3b 0a 20 20 20 55  eTimeoutAc;.   U
0b50: 4c 4f 4e 47 20 20 20 20 20 20 20 20 20 20 20 20  LONG            
0b60: 20 20 20 49 64 6c 65 54 69 6d 65 6f 75 74 44 63     IdleTimeoutDc
0b70: 3b 0a 20 20 20 55 43 48 41 52 20 20 20 20 20 20  ;.   UCHAR      
0b80: 20 20 20 20 20 20 20 20 20 49 64 6c 65 53 65 6e           IdleSen
0b90: 73 69 74 69 76 69 74 79 41 63 3b 0a 20 20 20 55  sitivityAc;.   U
0ba0: 43 48 41 52 20 20 20 20 20 20 20 20 20 20 20 20  CHAR            
0bb0: 20 20 20 49 64 6c 65 53 65 6e 73 69 74 69 76 69     IdleSensitivi
0bc0: 74 79 44 63 3b 0a 20 20 20 55 43 48 41 52 20 20  tyDc;.   UCHAR  
0bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 72               Thr
0be0: 6f 74 74 6c 65 50 6f 6c 69 63 79 41 63 3b 0a 20  ottlePolicyAc;. 
0bf0: 20 20 55 43 48 41 52 20 20 20 20 20 20 20 20 20    UCHAR         
0c00: 20 20 20 20 20 20 54 68 72 6f 74 74 6c 65 50 6f        ThrottlePo
0c10: 6c 69 63 79 44 63 3b 0a 20 20 20 53 59 53 54 45  licyDc;.   SYSTE
0c20: 4d 5f 50 4f 57 45 52 5f 53 54 41 54 45 20 20 4d  M_POWER_STATE  M
0c30: 61 78 53 6c 65 65 70 41 63 3b 0a 20 20 20 53 59  axSleepAc;.   SY
0c40: 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41 54 45  STEM_POWER_STATE
0c50: 20 20 4d 61 78 53 6c 65 65 70 44 63 3b 0a 20 20    MaxSleepDc;.  
0c60: 20 55 4c 4f 4e 47 5b 32 5d 20 20 20 20 20 20 20   ULONG[2]       
0c70: 20 20 20 20 20 52 65 73 65 72 76 65 64 3b 0a 20       Reserved;. 
0c80: 20 20 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20    ULONG         
0c90: 20 20 20 20 20 20 56 69 64 65 6f 54 69 6d 65 6f        VideoTimeo
0ca0: 75 74 41 63 3b 0a 20 20 20 55 4c 4f 4e 47 20 20  utAc;.   ULONG  
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 56 69 64               Vid
0cc0: 65 6f 54 69 6d 65 6f 75 74 44 63 3b 0a 20 20 20  eoTimeoutDc;.   
0cd0: 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20 20 20  ULONG           
0ce0: 20 20 20 20 53 70 69 6e 64 6f 77 6e 54 69 6d 65      SpindownTime
0cf0: 6f 75 74 41 63 3b 0a 20 20 20 55 4c 4f 4e 47 20  outAc;.   ULONG 
0d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 70                Sp
0d10: 69 6e 64 6f 77 6e 54 69 6d 65 6f 75 74 44 63 3b  indownTimeoutDc;
0d20: 0a 20 20 20 42 4f 4f 4c 45 41 4e 20 20 20 20 20  .   BOOLEAN     
0d30: 20 20 20 20 20 20 20 20 4f 70 74 69 6d 69 7a 65          Optimize
0d40: 46 6f 72 50 6f 77 65 72 41 63 3b 0a 20 20 20 42  ForPowerAc;.   B
0d50: 4f 4f 4c 45 41 4e 20 20 20 20 20 20 20 20 20 20  OOLEAN          
0d60: 20 20 20 4f 70 74 69 6d 69 7a 65 46 6f 72 50 6f     OptimizeForPo
0d70: 77 65 72 44 63 3b 0a 20 20 20 55 43 48 41 52 20  werDc;.   UCHAR 
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 61                Fa
0d90: 6e 54 68 72 6f 74 74 6c 65 54 6f 6c 65 72 61 6e  nThrottleToleran
0da0: 63 65 41 63 3b 0a 20 20 20 55 43 48 41 52 20 20  ceAc;.   UCHAR  
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 61 6e               Fan
0dc0: 54 68 72 6f 74 74 6c 65 54 6f 6c 65 72 61 6e 63  ThrottleToleranc
0dd0: 65 44 63 3b 0a 20 20 20 55 43 48 41 52 20 20 20  eDc;.   UCHAR   
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 63              Forc
0df0: 65 64 54 68 72 6f 74 74 6c 65 41 63 3b 0a 20 20  edThrottleAc;.  
0e00: 20 55 43 48 41 52 20 20 20 20 20 20 20 20 20 20   UCHAR          
0e10: 20 20 20 20 20 46 6f 72 63 65 64 54 68 72 6f 74       ForcedThrot
0e20: 74 6c 65 44 63 3b 0a 7d 0a 61 6c 69 61 73 20 55  tleDc;.}.alias U
0e30: 53 45 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59  SER_POWER_POLICY
0e40: 2a 20 50 55 53 45 52 5f 50 4f 57 45 52 5f 50 4f  * PUSER_POWER_PO
0e50: 4c 49 43 59 3b 0a 0a 73 74 72 75 63 74 20 50 4f  LICY;..struct PO
0e60: 57 45 52 5f 50 4f 4c 49 43 59 20 7b 0a 09 55 53  WER_POLICY {..US
0e70: 45 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20  ER_POWER_POLICY 
0e80: 20 20 20 75 73 65 72 3b 0a 09 4d 41 43 48 49 4e     user;..MACHIN
0e90: 45 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20 6d  E_POWER_POLICY m
0ea0: 61 63 68 3b 0a 7d 0a 61 6c 69 61 73 20 50 4f 57  ach;.}.alias POW
0eb0: 45 52 5f 50 4f 4c 49 43 59 2a 20 50 50 4f 57 45  ER_POLICY* PPOWE
0ec0: 52 5f 50 4f 4c 49 43 59 3b 0a 0a 65 78 74 65 72  R_POLICY;..exter
0ed0: 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 61  n (Windows) {..a
0ee0: 6c 69 61 73 20 42 4f 4f 4c 45 41 4e 20 66 75 6e  lias BOOLEAN fun
0ef0: 63 74 69 6f 6e 28 55 49 4e 54 2c 20 44 57 4f 52  ction(UINT, DWOR
0f00: 44 2c 20 4c 50 54 53 54 52 2c 20 44 57 4f 52 44  D, LPTSTR, DWORD
0f10: 2c 20 4c 50 54 53 54 52 2c 20 50 50 4f 57 45 52  , LPTSTR, PPOWER
0f20: 5f 50 4f 4c 49 43 59 2c 0a 09 20 20 4c 50 41 52  _POLICY,..  LPAR
0f30: 41 4d 29 20 50 57 52 53 43 48 45 4d 45 53 45 4e  AM) PWRSCHEMESEN
0f40: 55 4d 50 52 4f 43 3b 0a 09 61 6c 69 61 73 20 42  UMPROC;..alias B
0f50: 4f 4f 4c 45 41 4e 20 66 75 6e 63 74 69 6f 6e 28  OOLEAN function(
0f60: 50 4f 57 45 52 5f 41 43 54 49 4f 4e 2c 20 53 59  POWER_ACTION, SY
0f70: 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41 54 45  STEM_POWER_STATE
0f80: 2c 20 55 4c 4f 4e 47 2c 20 42 4f 4f 4c 45 41 4e  , ULONG, BOOLEAN
0f90: 29 0a 09 20 20 50 46 4e 4e 54 49 4e 49 54 49 41  )..  PFNNTINITIA
0fa0: 54 45 50 57 52 41 43 54 49 4f 4e 3b 0a 0a 09 4e  TEPWRACTION;...N
0fb0: 54 53 54 41 54 55 53 20 43 61 6c 6c 4e 74 50 6f  TSTATUS CallNtPo
0fc0: 77 65 72 49 6e 66 6f 72 6d 61 74 69 6f 6e 28 50  werInformation(P
0fd0: 4f 57 45 52 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e  OWER_INFORMATION
0fe0: 5f 4c 45 56 45 4c 2c 20 50 56 4f 49 44 2c 20 55  _LEVEL, PVOID, U
0ff0: 4c 4f 4e 47 2c 0a 09 20 20 50 56 4f 49 44 2c 20  LONG,..  PVOID, 
1000: 55 4c 4f 4e 47 29 3b 0a 09 42 4f 4f 4c 45 41 4e  ULONG);..BOOLEAN
1010: 20 43 61 6e 55 73 65 72 57 72 69 74 65 50 77 72   CanUserWritePwr
1020: 53 63 68 65 6d 65 28 29 3b 0a 09 42 4f 4f 4c 45  Scheme();..BOOLE
1030: 41 4e 20 44 65 6c 65 74 65 50 77 72 53 63 68 65  AN DeletePwrSche
1040: 6d 65 28 55 49 4e 54 29 3b 0a 09 42 4f 4f 4c 45  me(UINT);..BOOLE
1050: 41 4e 20 45 6e 75 6d 50 77 72 53 63 68 65 6d 65  AN EnumPwrScheme
1060: 73 28 50 57 52 53 43 48 45 4d 45 53 45 4e 55 4d  s(PWRSCHEMESENUM
1070: 50 52 4f 43 2c 20 4c 50 41 52 41 4d 29 3b 0a 09  PROC, LPARAM);..
1080: 42 4f 4f 4c 45 41 4e 20 47 65 74 41 63 74 69 76  BOOLEAN GetActiv
1090: 65 50 77 72 53 63 68 65 6d 65 28 50 55 49 4e 54  ePwrScheme(PUINT
10a0: 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 47 65 74 43  );..BOOLEAN GetC
10b0: 75 72 72 65 6e 74 50 6f 77 65 72 50 6f 6c 69 63  urrentPowerPolic
10c0: 69 65 73 28 50 47 4c 4f 42 41 4c 5f 50 4f 57 45  ies(PGLOBAL_POWE
10d0: 52 5f 50 4f 4c 49 43 59 2c 20 50 50 4f 57 45 52  R_POLICY, PPOWER
10e0: 5f 50 4f 4c 49 43 59 29 3b 0a 09 42 4f 4f 4c 45  _POLICY);..BOOLE
10f0: 41 4e 20 47 65 74 50 77 72 43 61 70 61 62 69 6c  AN GetPwrCapabil
1100: 69 74 69 65 73 28 50 53 59 53 54 45 4d 5f 50 4f  ities(PSYSTEM_PO
1110: 57 45 52 5f 43 41 50 41 42 49 4c 49 54 49 45 53  WER_CAPABILITIES
1120: 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 47 65 74 50  );..BOOLEAN GetP
1130: 77 72 44 69 73 6b 53 70 69 6e 64 6f 77 6e 52 61  wrDiskSpindownRa
1140: 6e 67 65 28 50 55 49 4e 54 2c 20 50 55 49 4e 54  nge(PUINT, PUINT
1150: 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 49 73 41 64  );..BOOLEAN IsAd
1160: 6d 69 6e 4f 76 65 72 72 69 64 65 41 63 74 69 76  minOverrideActiv
1170: 65 28 50 41 44 4d 49 4e 49 53 54 52 41 54 4f 52  e(PADMINISTRATOR
1180: 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b 0a  _POWER_POLICY);.
1190: 09 42 4f 4f 4c 45 41 4e 20 49 73 50 77 72 48 69  .BOOLEAN IsPwrHi
11a0: 62 65 72 6e 61 74 65 41 6c 6c 6f 77 65 64 28 29  bernateAllowed()
11b0: 3b 0a 09 42 4f 4f 4c 45 41 4e 20 49 73 50 77 72  ;..BOOLEAN IsPwr
11c0: 53 68 75 74 64 6f 77 6e 41 6c 6c 6f 77 65 64 28  ShutdownAllowed(
11d0: 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 49 73 50 77  );..BOOLEAN IsPw
11e0: 72 53 75 73 70 65 6e 64 41 6c 6c 6f 77 65 64 28  rSuspendAllowed(
11f0: 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 52 65 61 64  );..BOOLEAN Read
1200: 47 6c 6f 62 61 6c 50 77 72 50 6f 6c 69 63 79 28  GlobalPwrPolicy(
1210: 50 47 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f 50 4f  PGLOBAL_POWER_PO
1220: 4c 49 43 59 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20  LICY);..BOOLEAN 
1230: 52 65 61 64 50 72 6f 63 65 73 73 6f 72 50 77 72  ReadProcessorPwr
1240: 53 63 68 65 6d 65 28 55 49 4e 54 2c 20 50 4d 41  Scheme(UINT, PMA
1250: 43 48 49 4e 45 5f 50 52 4f 43 45 53 53 4f 52 5f  CHINE_PROCESSOR_
1260: 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b 0a 09  POWER_POLICY);..
1270: 42 4f 4f 4c 45 41 4e 20 52 65 61 64 50 77 72 53  BOOLEAN ReadPwrS
1280: 63 68 65 6d 65 28 55 49 4e 54 2c 20 50 50 4f 57  cheme(UINT, PPOW
1290: 45 52 5f 50 4f 4c 49 43 59 29 3b 0a 09 42 4f 4f  ER_POLICY);..BOO
12a0: 4c 45 41 4e 20 53 65 74 41 63 74 69 76 65 50 77  LEAN SetActivePw
12b0: 72 53 63 68 65 6d 65 28 55 49 4e 54 2c 20 50 47  rScheme(UINT, PG
12c0: 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49  LOBAL_POWER_POLI
12d0: 43 59 2c 20 50 50 4f 57 45 52 5f 50 4f 4c 49 43  CY, PPOWER_POLIC
12e0: 59 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20 53 65 74  Y);..BOOLEAN Set
12f0: 53 75 73 70 65 6e 64 53 74 61 74 65 28 42 4f 4f  SuspendState(BOO
1300: 4c 45 41 4e 2c 20 42 4f 4f 4c 45 41 4e 2c 20 42  LEAN, BOOLEAN, B
1310: 4f 4f 4c 45 41 4e 29 3b 0a 09 42 4f 4f 4c 45 41  OOLEAN);..BOOLEA
1320: 4e 20 57 72 69 74 65 47 6c 6f 62 61 6c 50 77 72  N WriteGlobalPwr
1330: 50 6f 6c 69 63 79 28 50 47 4c 4f 42 41 4c 5f 50  Policy(PGLOBAL_P
1340: 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b 0a 09 42  OWER_POLICY);..B
1350: 4f 4f 4c 45 41 4e 20 57 72 69 74 65 50 72 6f 63  OOLEAN WriteProc
1360: 65 73 73 6f 72 50 77 72 53 63 68 65 6d 65 28 55  essorPwrScheme(U
1370: 49 4e 54 2c 20 50 4d 41 43 48 49 4e 45 5f 50 52  INT, PMACHINE_PR
1380: 4f 43 45 53 53 4f 52 5f 50 4f 57 45 52 5f 50 4f  OCESSOR_POWER_PO
1390: 4c 49 43 59 29 3b 0a 09 42 4f 4f 4c 45 41 4e 20  LICY);..BOOLEAN 
13a0: 56 61 6c 69 64 61 74 65 50 6f 77 65 72 50 6f 6c  ValidatePowerPol
13b0: 69 63 69 65 73 28 50 47 4c 4f 42 41 4c 5f 50 4f  icies(PGLOBAL_PO
13c0: 57 45 52 5f 50 4f 4c 49 43 59 2c 20 50 50 4f 57  WER_POLICY, PPOW
13d0: 45 52 5f 50 4f 4c 49 43 59 29 3b 0a 09 42 4f 4f  ER_POLICY);..BOO
13e0: 4c 45 41 4e 20 57 72 69 74 65 50 77 72 53 63 68  LEAN WritePwrSch
13f0: 65 6d 65 28 50 55 49 4e 54 2c 20 4c 50 54 53 54  eme(PUINT, LPTST
1400: 52 2c 20 4c 50 54 53 54 52 2c 20 50 50 4f 57 45  R, LPTSTR, PPOWE
1410: 52 5f 50 4f 4c 49 43 59 29 3b 0a 7d 0a           R_POLICY);.}.