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);.}.