Hex Artifact Content

Not logged in

Artifact 4256acef1917a8cc61c2b482e5c693e63daf6a3d:


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 0d 0a 2a 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 20 70 6f 77 72 70             powrp
0070: 72 6f 66 2e 64 20 20 20 20 20 20 20 20 20 20 20  rof.d           
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 20 2a 0d 0a 2a 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 20 20 2a 0d                *.
00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .*              
00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73           Windows
0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75   API header modu
0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20  le              
0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 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: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20      *..*        
0180: 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 6c 61           Transla
0190: 74 65 64 20 66 72 6f 6d 20 4d 69 6e 47 57 20 57  ted from MinGW W
01a0: 69 6e 64 6f 77 73 20 68 65 61 64 65 72 73 20 20  indows headers  
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a                 *
01c0: 0d 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  ..*             
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79                by
01e0: 20 53 74 65 77 61 72 74 20 47 6f 72 64 6f 6e 20   Stewart Gordon 
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 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 20 20                  
0250: 20 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20       *..*       
0260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0270: 50 6c 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c  Placed into publ
0280: 69 63 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20  ic domain       
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02a0: 2a 0d 0a 5c 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 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 6d 6f  ***********/..mo
02f0: 64 75 6c 65 20 77 69 6e 33 32 2e 70 6f 77 72 70  dule win32.powrp
0300: 72 6f 66 3b 0d 0a 70 72 61 67 6d 61 28 6c 69 62  rof;..pragma(lib
0310: 2c 20 22 70 6f 77 72 70 72 6f 66 22 29 3b 0d 0a  , "powrprof");..
0320: 0d 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74  ..private import
0330: 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0d 0a   win32.windef;..
0340: 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74 20 77  private import w
0350: 69 6e 33 32 2e 6e 74 64 65 66 3b 0d 0a 0d 0a 2f  in32.ntdef;..../
0360: 2f 20 46 49 58 4d 45 3a 20 6c 6f 6f 6b 20 75 70  / FIXME: look up
0370: 20 57 69 6e 64 6f 77 73 20 76 65 72 73 69 6f 6e   Windows version
0380: 20 73 75 70 70 6f 72 74 0d 0a 0d 0a 63 6f 6e 73   support....cons
0390: 74 20 55 4c 4f 4e 47 0d 0a 09 45 6e 61 62 6c 65  t ULONG...Enable
03a0: 53 79 73 54 72 61 79 42 61 74 74 65 72 79 4d 65  SysTrayBatteryMe
03b0: 74 65 72 20 3d 20 20 31 2c 0d 0a 09 45 6e 61 62  ter =  1,...Enab
03c0: 6c 65 4d 75 6c 74 69 42 61 74 74 65 72 79 44 69  leMultiBatteryDi
03d0: 73 70 6c 61 79 20 3d 20 20 32 2c 0d 0a 09 45 6e  splay =  2,...En
03e0: 61 62 6c 65 50 61 73 73 77 6f 72 64 4c 6f 67 6f  ablePasswordLogo
03f0: 6e 20 20 20 20 20 20 20 3d 20 20 34 2c 0d 0a 09  n       =  4,...
0400: 45 6e 61 62 6c 65 57 61 6b 65 4f 6e 52 69 6e 67  EnableWakeOnRing
0410: 20 20 20 20 20 20 20 20 20 20 3d 20 20 38 2c 0d            =  8,.
0420: 0a 09 45 6e 61 62 6c 65 56 69 64 65 6f 44 69 6d  ..EnableVideoDim
0430: 44 69 73 70 6c 61 79 20 20 20 20 20 3d 20 31 36  Display     = 16
0440: 3b 0d 0a 0d 0a 63 6f 6e 73 74 20 55 49 4e 54 20  ;....const UINT 
0450: 4e 45 57 53 43 48 45 4d 45 20 3d 20 2d 31 3b 0d  NEWSCHEME = -1;.
0460: 0a 0d 0a 73 74 72 75 63 74 20 47 4c 4f 42 41 4c  ...struct GLOBAL
0470: 5f 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52 5f 50  _MACHINE_POWER_P
0480: 4f 4c 49 43 59 20 7b 0d 0a 09 55 4c 4f 4e 47 20  OLICY {...ULONG 
0490: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 76               Rev
04a0: 69 73 69 6f 6e 3b 0d 0a 09 53 59 53 54 45 4d 5f  ision;...SYSTEM_
04b0: 50 4f 57 45 52 5f 53 54 41 54 45 20 4c 69 64 4f  POWER_STATE LidO
04c0: 70 65 6e 57 61 6b 65 41 63 3b 0d 0a 09 53 59 53  penWakeAc;...SYS
04d0: 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41 54 45 20  TEM_POWER_STATE 
04e0: 4c 69 64 4f 70 65 6e 57 61 6b 65 44 63 3b 0d 0a  LidOpenWakeDc;..
04f0: 09 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20 20  .ULONG          
0500: 20 20 20 20 42 72 6f 61 64 63 61 73 74 43 61 70      BroadcastCap
0510: 61 63 69 74 79 52 65 73 6f 6c 75 74 69 6f 6e 3b  acityResolution;
0520: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 47 4c 4f 42 41  ..}..alias GLOBA
0530: 4c 5f 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52 5f  L_MACHINE_POWER_
0540: 50 4f 4c 49 43 59 2a 20 50 47 4c 4f 42 41 4c 5f  POLICY* PGLOBAL_
0550: 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52 5f 50 4f  MACHINE_POWER_PO
0560: 4c 49 43 59 3b 0d 0a 0d 0a 73 74 72 75 63 74 20  LICY;....struct 
0570: 47 4c 4f 42 41 4c 5f 55 53 45 52 5f 50 4f 57 45  GLOBAL_USER_POWE
0580: 52 5f 50 4f 4c 49 43 59 20 7b 0d 0a 09 55 4c 4f  R_POLICY {...ULO
0590: 4e 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NG              
05a0: 20 52 65 76 69 73 69 6f 6e 3b 0d 0a 09 50 4f 57   Revision;...POW
05b0: 45 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59  ER_ACTION_POLICY
05c0: 20 50 6f 77 65 72 42 75 74 74 6f 6e 41 63 3b 0d   PowerButtonAc;.
05d0: 0a 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f 50  ..POWER_ACTION_P
05e0: 4f 4c 49 43 59 20 50 6f 77 65 72 42 75 74 74 6f  OLICY PowerButto
05f0: 6e 44 63 3b 0d 0a 09 50 4f 57 45 52 5f 41 43 54  nDc;...POWER_ACT
0600: 49 4f 4e 5f 50 4f 4c 49 43 59 20 53 6c 65 65 70  ION_POLICY Sleep
0610: 42 75 74 74 6f 6e 41 63 3b 0d 0a 09 50 4f 57 45  ButtonAc;...POWE
0620: 52 5f 41 43 54 49 4f 4e 5f 50 4f 4c 49 43 59 20  R_ACTION_POLICY 
0630: 53 6c 65 65 70 42 75 74 74 6f 6e 44 63 3b 0d 0a  SleepButtonDc;..
0640: 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f 50 4f  .POWER_ACTION_PO
0650: 4c 49 43 59 20 4c 69 64 43 6c 6f 73 65 41 63 3b  LICY LidCloseAc;
0660: 0d 0a 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f  ...POWER_ACTION_
0670: 50 4f 4c 49 43 59 20 4c 69 64 43 6c 6f 73 65 44  POLICY LidCloseD
0680: 63 3b 0d 0a 09 53 59 53 54 45 4d 5f 50 4f 57 45  c;...SYSTEM_POWE
0690: 52 5f 4c 45 56 45 4c 5b 4e 55 4d 5f 44 49 53 43  R_LEVEL[NUM_DISC
06a0: 48 41 52 47 45 5f 50 4f 4c 49 43 49 45 53 5d 20  HARGE_POLICIES] 
06b0: 44 69 73 63 68 61 72 67 65 50 6f 6c 69 63 79 3b  DischargePolicy;
06c0: 0d 0a 09 55 4c 4f 4e 47 20 47 6c 6f 62 61 6c 46  ...ULONG GlobalF
06d0: 6c 61 67 73 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20  lags;..}..alias 
06e0: 47 4c 4f 42 41 4c 5f 55 53 45 52 5f 50 4f 57 45  GLOBAL_USER_POWE
06f0: 52 5f 50 4f 4c 49 43 59 2a 20 50 47 4c 4f 42 41  R_POLICY* PGLOBA
0700: 4c 5f 55 53 45 52 5f 50 4f 57 45 52 5f 50 4f 4c  L_USER_POWER_POL
0710: 49 43 59 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 47  ICY;....struct G
0720: 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49  LOBAL_POWER_POLI
0730: 43 59 20 7b 0d 0a 09 47 4c 4f 42 41 4c 5f 55 53  CY {...GLOBAL_US
0740: 45 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20  ER_POWER_POLICY 
0750: 20 20 20 75 73 65 72 3b 0d 0a 09 47 4c 4f 42 41     user;...GLOBA
0760: 4c 5f 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52 5f  L_MACHINE_POWER_
0770: 50 4f 4c 49 43 59 20 6d 61 63 68 3b 0d 0a 7d 0d  POLICY mach;..}.
0780: 0a 61 6c 69 61 73 20 47 4c 4f 42 41 4c 5f 50 4f  .alias GLOBAL_PO
0790: 57 45 52 5f 50 4f 4c 49 43 59 2a 20 50 47 4c 4f  WER_POLICY* PGLO
07a0: 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59  BAL_POWER_POLICY
07b0: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 4d 41 43 48  ;....struct MACH
07c0: 49 4e 45 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59  INE_POWER_POLICY
07d0: 20 7b 0d 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20   {...ULONG      
07e0: 20 20 20 20 20 20 20 20 20 52 65 76 69 73 69 6f           Revisio
07f0: 6e 3b 0d 0a 09 53 59 53 54 45 4d 5f 50 4f 57 45  n;...SYSTEM_POWE
0800: 52 5f 53 54 41 54 45 20 20 4d 69 6e 53 6c 65 65  R_STATE  MinSlee
0810: 70 41 63 3b 0d 0a 09 53 59 53 54 45 4d 5f 50 4f  pAc;...SYSTEM_PO
0820: 57 45 52 5f 53 54 41 54 45 20 20 4d 69 6e 53 6c  WER_STATE  MinSl
0830: 65 65 70 44 63 3b 0d 0a 09 53 59 53 54 45 4d 5f  eepDc;...SYSTEM_
0840: 50 4f 57 45 52 5f 53 54 41 54 45 20 20 52 65 64  POWER_STATE  Red
0850: 75 63 65 64 4c 61 74 65 6e 63 79 53 6c 65 65 70  ucedLatencySleep
0860: 41 63 3b 0d 0a 09 53 59 53 54 45 4d 5f 50 4f 57  Ac;...SYSTEM_POW
0870: 45 52 5f 53 54 41 54 45 20 20 52 65 64 75 63 65  ER_STATE  Reduce
0880: 64 4c 61 74 65 6e 63 79 53 6c 65 65 70 44 63 3b  dLatencySleepDc;
0890: 0d 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20 20 20  ...ULONG        
08a0: 20 20 20 20 20 20 20 44 6f 7a 65 54 69 6d 65 6f         DozeTimeo
08b0: 75 74 41 63 3b 0d 0a 09 55 4c 4f 4e 47 20 20 20  utAc;...ULONG   
08c0: 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 7a 65              Doze
08d0: 54 69 6d 65 6f 75 74 44 63 3b 0d 0a 09 55 4c 4f  TimeoutDc;...ULO
08e0: 4e 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NG              
08f0: 20 44 6f 7a 65 53 34 54 69 6d 65 6f 75 74 41 63   DozeS4TimeoutAc
0900: 3b 0d 0a 09 55 4c 4f 4e 47 20 20 20 20 20 20 20  ;...ULONG       
0910: 20 20 20 20 20 20 20 20 44 6f 7a 65 53 34 54 69          DozeS4Ti
0920: 6d 65 6f 75 74 44 63 3b 0d 0a 09 55 43 48 41 52  meoutDc;...UCHAR
0930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
0940: 69 6e 54 68 72 6f 74 74 6c 65 41 63 3b 0d 0a 09  inThrottleAc;...
0950: 55 43 48 41 52 20 20 20 20 20 20 20 20 20 20 20  UCHAR           
0960: 20 20 20 20 4d 69 6e 54 68 72 6f 74 74 6c 65 44      MinThrottleD
0970: 63 3b 0d 0a 09 55 43 48 41 52 5b 32 5d 20 20 20  c;...UCHAR[2]   
0980: 20 20 20 20 20 20 20 20 20 70 61 64 31 3b 0d 0a           pad1;..
0990: 09 50 4f 57 45 52 5f 41 43 54 49 4f 4e 5f 50 4f  .POWER_ACTION_PO
09a0: 4c 49 43 59 20 4f 76 65 72 54 68 72 6f 74 74 6c  LICY OverThrottl
09b0: 65 64 41 63 3b 0d 0a 09 50 4f 57 45 52 5f 41 43  edAc;...POWER_AC
09c0: 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 4f 76 65 72  TION_POLICY Over
09d0: 54 68 72 6f 74 74 6c 65 64 44 63 3b 0d 0a 7d 0d  ThrottledDc;..}.
09e0: 0a 61 6c 69 61 73 20 4d 41 43 48 49 4e 45 5f 50  .alias MACHINE_P
09f0: 4f 57 45 52 5f 50 4f 4c 49 43 59 2a 20 50 4d 41  OWER_POLICY* PMA
0a00: 43 48 49 4e 45 5f 50 4f 57 45 52 5f 50 4f 4c 49  CHINE_POWER_POLI
0a10: 43 59 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 4d 41  CY;....struct MA
0a20: 43 48 49 4e 45 5f 50 52 4f 43 45 53 53 4f 52 5f  CHINE_PROCESSOR_
0a30: 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20 7b 0d 0a  POWER_POLICY {..
0a40: 09 55 4c 4f 4e 47 20 52 65 76 69 73 69 6f 6e 3b  .ULONG Revision;
0a50: 0d 0a 09 50 52 4f 43 45 53 53 4f 52 5f 50 4f 57  ...PROCESSOR_POW
0a60: 45 52 5f 50 4f 4c 49 43 59 20 50 72 6f 63 65 73  ER_POLICY Proces
0a70: 73 6f 72 50 6f 6c 69 63 79 41 63 3b 0d 0a 09 50  sorPolicyAc;...P
0a80: 52 4f 43 45 53 53 4f 52 5f 50 4f 57 45 52 5f 50  ROCESSOR_POWER_P
0a90: 4f 4c 49 43 59 20 50 72 6f 63 65 73 73 6f 72 50  OLICY ProcessorP
0aa0: 6f 6c 69 63 79 44 63 3b 0d 0a 7d 0d 0a 61 6c 69  olicyDc;..}..ali
0ab0: 61 73 20 4d 41 43 48 49 4e 45 5f 50 52 4f 43 45  as MACHINE_PROCE
0ac0: 53 53 4f 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43  SSOR_POWER_POLIC
0ad0: 59 2a 20 50 4d 41 43 48 49 4e 45 5f 50 52 4f 43  Y* PMACHINE_PROC
0ae0: 45 53 53 4f 52 5f 50 4f 57 45 52 5f 50 4f 4c 49  ESSOR_POWER_POLI
0af0: 43 59 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 55 53  CY;....struct US
0b00: 45 52 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20  ER_POWER_POLICY 
0b10: 7b 0d 0a 20 20 20 55 4c 4f 4e 47 20 20 20 20 20  {..   ULONG     
0b20: 20 20 20 20 20 20 20 20 20 20 52 65 76 69 73 69            Revisi
0b30: 6f 6e 3b 0d 0a 20 20 20 50 4f 57 45 52 5f 41 43  on;..   POWER_AC
0b40: 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 49 64 6c 65  TION_POLICY Idle
0b50: 41 63 3b 0d 0a 20 20 20 50 4f 57 45 52 5f 41 43  Ac;..   POWER_AC
0b60: 54 49 4f 4e 5f 50 4f 4c 49 43 59 20 49 64 6c 65  TION_POLICY Idle
0b70: 44 63 3b 0d 0a 20 20 20 55 4c 4f 4e 47 20 20 20  Dc;..   ULONG   
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 49 64 6c 65              Idle
0b90: 54 69 6d 65 6f 75 74 41 63 3b 0d 0a 20 20 20 55  TimeoutAc;..   U
0ba0: 4c 4f 4e 47 20 20 20 20 20 20 20 20 20 20 20 20  LONG            
0bb0: 20 20 20 49 64 6c 65 54 69 6d 65 6f 75 74 44 63     IdleTimeoutDc
0bc0: 3b 0d 0a 20 20 20 55 43 48 41 52 20 20 20 20 20  ;..   UCHAR     
0bd0: 20 20 20 20 20 20 20 20 20 20 49 64 6c 65 53 65            IdleSe
0be0: 6e 73 69 74 69 76 69 74 79 41 63 3b 0d 0a 20 20  nsitivityAc;..  
0bf0: 20 55 43 48 41 52 20 20 20 20 20 20 20 20 20 20   UCHAR          
0c00: 20 20 20 20 20 49 64 6c 65 53 65 6e 73 69 74 69       IdleSensiti
0c10: 76 69 74 79 44 63 3b 0d 0a 20 20 20 55 43 48 41  vityDc;..   UCHA
0c20: 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  R               
0c30: 54 68 72 6f 74 74 6c 65 50 6f 6c 69 63 79 41 63  ThrottlePolicyAc
0c40: 3b 0d 0a 20 20 20 55 43 48 41 52 20 20 20 20 20  ;..   UCHAR     
0c50: 20 20 20 20 20 20 20 20 20 20 54 68 72 6f 74 74            Thrott
0c60: 6c 65 50 6f 6c 69 63 79 44 63 3b 0d 0a 20 20 20  lePolicyDc;..   
0c70: 53 59 53 54 45 4d 5f 50 4f 57 45 52 5f 53 54 41  SYSTEM_POWER_STA
0c80: 54 45 20 20 4d 61 78 53 6c 65 65 70 41 63 3b 0d  TE  MaxSleepAc;.
0c90: 0a 20 20 20 53 59 53 54 45 4d 5f 50 4f 57 45 52  .   SYSTEM_POWER
0ca0: 5f 53 54 41 54 45 20 20 4d 61 78 53 6c 65 65 70  _STATE  MaxSleep
0cb0: 44 63 3b 0d 0a 20 20 20 55 4c 4f 4e 47 5b 32 5d  Dc;..   ULONG[2]
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 73 65              Rese
0cd0: 72 76 65 64 3b 0d 0a 20 20 20 55 4c 4f 4e 47 20  rved;..   ULONG 
0ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 69                Vi
0cf0: 64 65 6f 54 69 6d 65 6f 75 74 41 63 3b 0d 0a 20  deoTimeoutAc;.. 
0d00: 20 20 55 4c 4f 4e 47 20 20 20 20 20 20 20 20 20    ULONG         
0d10: 20 20 20 20 20 20 56 69 64 65 6f 54 69 6d 65 6f        VideoTimeo
0d20: 75 74 44 63 3b 0d 0a 20 20 20 55 4c 4f 4e 47 20  utDc;..   ULONG 
0d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 70                Sp
0d40: 69 6e 64 6f 77 6e 54 69 6d 65 6f 75 74 41 63 3b  indownTimeoutAc;
0d50: 0d 0a 20 20 20 55 4c 4f 4e 47 20 20 20 20 20 20  ..   ULONG      
0d60: 20 20 20 20 20 20 20 20 20 53 70 69 6e 64 6f 77           Spindow
0d70: 6e 54 69 6d 65 6f 75 74 44 63 3b 0d 0a 20 20 20  nTimeoutDc;..   
0d80: 42 4f 4f 4c 45 41 4e 20 20 20 20 20 20 20 20 20  BOOLEAN         
0d90: 20 20 20 20 4f 70 74 69 6d 69 7a 65 46 6f 72 50      OptimizeForP
0da0: 6f 77 65 72 41 63 3b 0d 0a 20 20 20 42 4f 4f 4c  owerAc;..   BOOL
0db0: 45 41 4e 20 20 20 20 20 20 20 20 20 20 20 20 20  EAN             
0dc0: 4f 70 74 69 6d 69 7a 65 46 6f 72 50 6f 77 65 72  OptimizeForPower
0dd0: 44 63 3b 0d 0a 20 20 20 55 43 48 41 52 20 20 20  Dc;..   UCHAR   
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 46 61 6e 54              FanT
0df0: 68 72 6f 74 74 6c 65 54 6f 6c 65 72 61 6e 63 65  hrottleTolerance
0e00: 41 63 3b 0d 0a 20 20 20 55 43 48 41 52 20 20 20  Ac;..   UCHAR   
0e10: 20 20 20 20 20 20 20 20 20 20 20 20 46 61 6e 54              FanT
0e20: 68 72 6f 74 74 6c 65 54 6f 6c 65 72 61 6e 63 65  hrottleTolerance
0e30: 44 63 3b 0d 0a 20 20 20 55 43 48 41 52 20 20 20  Dc;..   UCHAR   
0e40: 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 63              Forc
0e50: 65 64 54 68 72 6f 74 74 6c 65 41 63 3b 0d 0a 20  edThrottleAc;.. 
0e60: 20 20 55 43 48 41 52 20 20 20 20 20 20 20 20 20    UCHAR         
0e70: 20 20 20 20 20 20 46 6f 72 63 65 64 54 68 72 6f        ForcedThro
0e80: 74 74 6c 65 44 63 3b 0d 0a 7d 0d 0a 61 6c 69 61  ttleDc;..}..alia
0e90: 73 20 55 53 45 52 5f 50 4f 57 45 52 5f 50 4f 4c  s USER_POWER_POL
0ea0: 49 43 59 2a 20 50 55 53 45 52 5f 50 4f 57 45 52  ICY* PUSER_POWER
0eb0: 5f 50 4f 4c 49 43 59 3b 0d 0a 0d 0a 73 74 72 75  _POLICY;....stru
0ec0: 63 74 20 50 4f 57 45 52 5f 50 4f 4c 49 43 59 20  ct POWER_POLICY 
0ed0: 7b 0d 0a 09 55 53 45 52 5f 50 4f 57 45 52 5f 50  {...USER_POWER_P
0ee0: 4f 4c 49 43 59 20 20 20 20 75 73 65 72 3b 0d 0a  OLICY    user;..
0ef0: 09 4d 41 43 48 49 4e 45 5f 50 4f 57 45 52 5f 50  .MACHINE_POWER_P
0f00: 4f 4c 49 43 59 20 6d 61 63 68 3b 0d 0a 7d 0d 0a  OLICY mach;..}..
0f10: 61 6c 69 61 73 20 50 4f 57 45 52 5f 50 4f 4c 49  alias POWER_POLI
0f20: 43 59 2a 20 50 50 4f 57 45 52 5f 50 4f 4c 49 43  CY* PPOWER_POLIC
0f30: 59 3b 0d 0a 0d 0a 65 78 74 65 72 6e 20 28 57 69  Y;....extern (Wi
0f40: 6e 64 6f 77 73 29 20 7b 0d 0a 09 61 6c 69 61 73  ndows) {...alias
0f50: 20 42 4f 4f 4c 45 41 4e 20 66 75 6e 63 74 69 6f   BOOLEAN functio
0f60: 6e 28 55 49 4e 54 2c 20 44 57 4f 52 44 2c 20 4c  n(UINT, DWORD, L
0f70: 50 54 53 54 52 2c 20 44 57 4f 52 44 2c 20 4c 50  PTSTR, DWORD, LP
0f80: 54 53 54 52 2c 20 50 50 4f 57 45 52 5f 50 4f 4c  TSTR, PPOWER_POL
0f90: 49 43 59 2c 0d 0a 09 20 20 4c 50 41 52 41 4d 29  ICY,...  LPARAM)
0fa0: 20 50 57 52 53 43 48 45 4d 45 53 45 4e 55 4d 50   PWRSCHEMESENUMP
0fb0: 52 4f 43 3b 0d 0a 09 61 6c 69 61 73 20 42 4f 4f  ROC;...alias BOO
0fc0: 4c 45 41 4e 20 66 75 6e 63 74 69 6f 6e 28 50 4f  LEAN function(PO
0fd0: 57 45 52 5f 41 43 54 49 4f 4e 2c 20 53 59 53 54  WER_ACTION, SYST
0fe0: 45 4d 5f 50 4f 57 45 52 5f 53 54 41 54 45 2c 20  EM_POWER_STATE, 
0ff0: 55 4c 4f 4e 47 2c 20 42 4f 4f 4c 45 41 4e 29 0d  ULONG, BOOLEAN).
1000: 0a 09 20 20 50 46 4e 4e 54 49 4e 49 54 49 41 54  ..  PFNNTINITIAT
1010: 45 50 57 52 41 43 54 49 4f 4e 3b 0d 0a 0d 0a 09  EPWRACTION;.....
1020: 4e 54 53 54 41 54 55 53 20 43 61 6c 6c 4e 74 50  NTSTATUS CallNtP
1030: 6f 77 65 72 49 6e 66 6f 72 6d 61 74 69 6f 6e 28  owerInformation(
1040: 50 4f 57 45 52 5f 49 4e 46 4f 52 4d 41 54 49 4f  POWER_INFORMATIO
1050: 4e 5f 4c 45 56 45 4c 2c 20 50 56 4f 49 44 2c 20  N_LEVEL, PVOID, 
1060: 55 4c 4f 4e 47 2c 0d 0a 09 20 20 50 56 4f 49 44  ULONG,...  PVOID
1070: 2c 20 55 4c 4f 4e 47 29 3b 0d 0a 09 42 4f 4f 4c  , ULONG);...BOOL
1080: 45 41 4e 20 43 61 6e 55 73 65 72 57 72 69 74 65  EAN CanUserWrite
1090: 50 77 72 53 63 68 65 6d 65 28 29 3b 0d 0a 09 42  PwrScheme();...B
10a0: 4f 4f 4c 45 41 4e 20 44 65 6c 65 74 65 50 77 72  OOLEAN DeletePwr
10b0: 53 63 68 65 6d 65 28 55 49 4e 54 29 3b 0d 0a 09  Scheme(UINT);...
10c0: 42 4f 4f 4c 45 41 4e 20 45 6e 75 6d 50 77 72 53  BOOLEAN EnumPwrS
10d0: 63 68 65 6d 65 73 28 50 57 52 53 43 48 45 4d 45  chemes(PWRSCHEME
10e0: 53 45 4e 55 4d 50 52 4f 43 2c 20 4c 50 41 52 41  SENUMPROC, LPARA
10f0: 4d 29 3b 0d 0a 09 42 4f 4f 4c 45 41 4e 20 47 65  M);...BOOLEAN Ge
1100: 74 41 63 74 69 76 65 50 77 72 53 63 68 65 6d 65  tActivePwrScheme
1110: 28 50 55 49 4e 54 29 3b 0d 0a 09 42 4f 4f 4c 45  (PUINT);...BOOLE
1120: 41 4e 20 47 65 74 43 75 72 72 65 6e 74 50 6f 77  AN GetCurrentPow
1130: 65 72 50 6f 6c 69 63 69 65 73 28 50 47 4c 4f 42  erPolicies(PGLOB
1140: 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 2c  AL_POWER_POLICY,
1150: 20 50 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b   PPOWER_POLICY);
1160: 0d 0a 09 42 4f 4f 4c 45 41 4e 20 47 65 74 50 77  ...BOOLEAN GetPw
1170: 72 43 61 70 61 62 69 6c 69 74 69 65 73 28 50 53  rCapabilities(PS
1180: 59 53 54 45 4d 5f 50 4f 57 45 52 5f 43 41 50 41  YSTEM_POWER_CAPA
1190: 42 49 4c 49 54 49 45 53 29 3b 0d 0a 09 42 4f 4f  BILITIES);...BOO
11a0: 4c 45 41 4e 20 47 65 74 50 77 72 44 69 73 6b 53  LEAN GetPwrDiskS
11b0: 70 69 6e 64 6f 77 6e 52 61 6e 67 65 28 50 55 49  pindownRange(PUI
11c0: 4e 54 2c 20 50 55 49 4e 54 29 3b 0d 0a 09 42 4f  NT, PUINT);...BO
11d0: 4f 4c 45 41 4e 20 49 73 41 64 6d 69 6e 4f 76 65  OLEAN IsAdminOve
11e0: 72 72 69 64 65 41 63 74 69 76 65 28 50 41 44 4d  rrideActive(PADM
11f0: 49 4e 49 53 54 52 41 54 4f 52 5f 50 4f 57 45 52  INISTRATOR_POWER
1200: 5f 50 4f 4c 49 43 59 29 3b 0d 0a 09 42 4f 4f 4c  _POLICY);...BOOL
1210: 45 41 4e 20 49 73 50 77 72 48 69 62 65 72 6e 61  EAN IsPwrHiberna
1220: 74 65 41 6c 6c 6f 77 65 64 28 29 3b 0d 0a 09 42  teAllowed();...B
1230: 4f 4f 4c 45 41 4e 20 49 73 50 77 72 53 68 75 74  OOLEAN IsPwrShut
1240: 64 6f 77 6e 41 6c 6c 6f 77 65 64 28 29 3b 0d 0a  downAllowed();..
1250: 09 42 4f 4f 4c 45 41 4e 20 49 73 50 77 72 53 75  .BOOLEAN IsPwrSu
1260: 73 70 65 6e 64 41 6c 6c 6f 77 65 64 28 29 3b 0d  spendAllowed();.
1270: 0a 09 42 4f 4f 4c 45 41 4e 20 52 65 61 64 47 6c  ..BOOLEAN ReadGl
1280: 6f 62 61 6c 50 77 72 50 6f 6c 69 63 79 28 50 47  obalPwrPolicy(PG
1290: 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49  LOBAL_POWER_POLI
12a0: 43 59 29 3b 0d 0a 09 42 4f 4f 4c 45 41 4e 20 52  CY);...BOOLEAN R
12b0: 65 61 64 50 72 6f 63 65 73 73 6f 72 50 77 72 53  eadProcessorPwrS
12c0: 63 68 65 6d 65 28 55 49 4e 54 2c 20 50 4d 41 43  cheme(UINT, PMAC
12d0: 48 49 4e 45 5f 50 52 4f 43 45 53 53 4f 52 5f 50  HINE_PROCESSOR_P
12e0: 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b 0d 0a 09  OWER_POLICY);...
12f0: 42 4f 4f 4c 45 41 4e 20 52 65 61 64 50 77 72 53  BOOLEAN ReadPwrS
1300: 63 68 65 6d 65 28 55 49 4e 54 2c 20 50 50 4f 57  cheme(UINT, PPOW
1310: 45 52 5f 50 4f 4c 49 43 59 29 3b 0d 0a 09 42 4f  ER_POLICY);...BO
1320: 4f 4c 45 41 4e 20 53 65 74 41 63 74 69 76 65 50  OLEAN SetActiveP
1330: 77 72 53 63 68 65 6d 65 28 55 49 4e 54 2c 20 50  wrScheme(UINT, P
1340: 47 4c 4f 42 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c  GLOBAL_POWER_POL
1350: 49 43 59 2c 20 50 50 4f 57 45 52 5f 50 4f 4c 49  ICY, PPOWER_POLI
1360: 43 59 29 3b 0d 0a 09 42 4f 4f 4c 45 41 4e 20 53  CY);...BOOLEAN S
1370: 65 74 53 75 73 70 65 6e 64 53 74 61 74 65 28 42  etSuspendState(B
1380: 4f 4f 4c 45 41 4e 2c 20 42 4f 4f 4c 45 41 4e 2c  OOLEAN, BOOLEAN,
1390: 20 42 4f 4f 4c 45 41 4e 29 3b 0d 0a 09 42 4f 4f   BOOLEAN);...BOO
13a0: 4c 45 41 4e 20 57 72 69 74 65 47 6c 6f 62 61 6c  LEAN WriteGlobal
13b0: 50 77 72 50 6f 6c 69 63 79 28 50 47 4c 4f 42 41  PwrPolicy(PGLOBA
13c0: 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b  L_POWER_POLICY);
13d0: 0d 0a 09 42 4f 4f 4c 45 41 4e 20 57 72 69 74 65  ...BOOLEAN Write
13e0: 50 72 6f 63 65 73 73 6f 72 50 77 72 53 63 68 65  ProcessorPwrSche
13f0: 6d 65 28 55 49 4e 54 2c 20 50 4d 41 43 48 49 4e  me(UINT, PMACHIN
1400: 45 5f 50 52 4f 43 45 53 53 4f 52 5f 50 4f 57 45  E_PROCESSOR_POWE
1410: 52 5f 50 4f 4c 49 43 59 29 3b 0d 0a 09 42 4f 4f  R_POLICY);...BOO
1420: 4c 45 41 4e 20 56 61 6c 69 64 61 74 65 50 6f 77  LEAN ValidatePow
1430: 65 72 50 6f 6c 69 63 69 65 73 28 50 47 4c 4f 42  erPolicies(PGLOB
1440: 41 4c 5f 50 4f 57 45 52 5f 50 4f 4c 49 43 59 2c  AL_POWER_POLICY,
1450: 20 50 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b   PPOWER_POLICY);
1460: 0d 0a 09 42 4f 4f 4c 45 41 4e 20 57 72 69 74 65  ...BOOLEAN Write
1470: 50 77 72 53 63 68 65 6d 65 28 50 55 49 4e 54 2c  PwrScheme(PUINT,
1480: 20 4c 50 54 53 54 52 2c 20 4c 50 54 53 54 52 2c   LPTSTR, LPTSTR,
1490: 20 50 50 4f 57 45 52 5f 50 4f 4c 49 43 59 29 3b   PPOWER_POLICY);
14a0: 0d 0a 7d 0d 0a                                   ..}..