Artifact 4256acef1917a8cc61c2b482e5c693e63daf6a3d:
- File
src/win32/powrprof.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
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 ..}..