Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifdef __cplusplus
      7 extern "C" {
      8 #endif
      9 
     10   typedef struct _GLOBAL_MACHINE_POWER_POLICY{
     11     ULONG Revision;
     12     SYSTEM_POWER_STATE LidOpenWakeAc;
     13     SYSTEM_POWER_STATE LidOpenWakeDc;
     14     ULONG BroadcastCapacityResolution;
     15   } GLOBAL_MACHINE_POWER_POLICY,*PGLOBAL_MACHINE_POWER_POLICY;
     16 
     17   typedef struct _GLOBAL_USER_POWER_POLICY{
     18     ULONG Revision;
     19     POWER_ACTION_POLICY PowerButtonAc;
     20     POWER_ACTION_POLICY PowerButtonDc;
     21     POWER_ACTION_POLICY SleepButtonAc;
     22     POWER_ACTION_POLICY SleepButtonDc;
     23     POWER_ACTION_POLICY LidCloseAc;
     24     POWER_ACTION_POLICY LidCloseDc;
     25     SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
     26     ULONG GlobalFlags;
     27   } GLOBAL_USER_POWER_POLICY,*PGLOBAL_USER_POWER_POLICY;
     28 
     29   typedef struct _GLOBAL_POWER_POLICY{
     30     GLOBAL_USER_POWER_POLICY user;
     31     GLOBAL_MACHINE_POWER_POLICY mach;
     32   } GLOBAL_POWER_POLICY,*PGLOBAL_POWER_POLICY;
     33 
     34   typedef struct _MACHINE_POWER_POLICY{
     35     ULONG Revision;
     36     SYSTEM_POWER_STATE MinSleepAc;
     37     SYSTEM_POWER_STATE MinSleepDc;
     38     SYSTEM_POWER_STATE ReducedLatencySleepAc;
     39     SYSTEM_POWER_STATE ReducedLatencySleepDc;
     40     ULONG DozeTimeoutAc;
     41     ULONG DozeTimeoutDc;
     42     ULONG DozeS4TimeoutAc;
     43     ULONG DozeS4TimeoutDc;
     44     UCHAR MinThrottleAc;
     45     UCHAR MinThrottleDc;
     46     UCHAR pad1[2];
     47     POWER_ACTION_POLICY OverThrottledAc;
     48     POWER_ACTION_POLICY OverThrottledDc;
     49   } MACHINE_POWER_POLICY,*PMACHINE_POWER_POLICY;
     50 
     51   typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
     52     ULONG Revision;
     53     PROCESSOR_POWER_POLICY ProcessorPolicyAc;
     54     PROCESSOR_POWER_POLICY ProcessorPolicyDc;
     55   } MACHINE_PROCESSOR_POWER_POLICY,*PMACHINE_PROCESSOR_POWER_POLICY;
     56 
     57   typedef struct _USER_POWER_POLICY{
     58     ULONG Revision;
     59     POWER_ACTION_POLICY IdleAc;
     60     POWER_ACTION_POLICY IdleDc;
     61     ULONG IdleTimeoutAc;
     62     ULONG IdleTimeoutDc;
     63     UCHAR IdleSensitivityAc;
     64     UCHAR IdleSensitivityDc;
     65     UCHAR ThrottlePolicyAc;
     66     UCHAR ThrottlePolicyDc;
     67     SYSTEM_POWER_STATE MaxSleepAc;
     68     SYSTEM_POWER_STATE MaxSleepDc;
     69     ULONG Reserved[2];
     70     ULONG VideoTimeoutAc;
     71     ULONG VideoTimeoutDc;
     72     ULONG SpindownTimeoutAc;
     73     ULONG SpindownTimeoutDc;
     74     BOOLEAN OptimizeForPowerAc;
     75     BOOLEAN OptimizeForPowerDc;
     76     UCHAR FanThrottleToleranceAc;
     77     UCHAR FanThrottleToleranceDc;
     78     UCHAR ForcedThrottleAc;
     79     UCHAR ForcedThrottleDc;
     80   } USER_POWER_POLICY,*PUSER_POWER_POLICY;
     81 
     82   typedef struct _POWER_POLICY{
     83     USER_POWER_POLICY user;
     84     MACHINE_POWER_POLICY mach;
     85   } POWER_POLICY,*PPOWER_POLICY;
     86 
     87 #define EnableSysTrayBatteryMeter 0x01
     88 #define EnableMultiBatteryDisplay 0x02
     89 #define EnablePasswordLogon 0x04
     90 #define EnableWakeOnRing 0x08
     91 #define EnableVideoDimDisplay 0x10
     92 
     93 #define NEWSCHEME (UINT)-1
     94 
     95   typedef BOOLEAN (CALLBACK *PWRSCHEMESENUMPROC)(UINT,DWORD,LPTSTR,DWORD,LPTSTR,PPOWER_POLICY,LPARAM);
     96   typedef BOOLEAN (CALLBACK *PFNNTINITIATEPWRACTION)(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
     97 
     98   BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT,PUINT);
     99   BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC,LPARAM);
    100   BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
    101   BOOLEAN WINAPI ReadPwrScheme(UINT,PPOWER_POLICY);
    102   BOOLEAN WINAPI WritePwrScheme(PUINT,LPTSTR,LPTSTR,PPOWER_POLICY);
    103   BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
    104   BOOLEAN WINAPI DeletePwrScheme(UINT);
    105   BOOLEAN WINAPI GetActivePwrScheme(PUINT);
    106   BOOLEAN WINAPI SetActivePwrScheme(UINT,PGLOBAL_POWER_POLICY,PPOWER_POLICY);
    107   BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
    108   BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
    109   BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
    110   BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
    111   BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
    112   BOOLEAN WINAPI SetSuspendState(BOOLEAN,BOOLEAN,BOOLEAN);
    113   BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY,PPOWER_POLICY);
    114   BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
    115   BOOLEAN WINAPI ReadProcessorPwrScheme(UINT,PMACHINE_PROCESSOR_POWER_POLICY);
    116   BOOLEAN WINAPI WriteProcessorPwrScheme(UINT,PMACHINE_PROCESSOR_POWER_POLICY);
    117   BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY,PPOWER_POLICY);
    118 
    119 #if (_WIN32_WINNT >= 0x0600)
    120 #define DEVICEPOWER_HARDWAREID 0x80000000
    121 #define DEVICEPOWER_FILTER_DEVICES_PRESENT 0x20000000
    122 #define DEVICEPOWER_AND_OPERATION 0x40000000
    123 #define DEVICEPOWER_FILTER_WAKEENABLED 0x08000000
    124 #define DEVICEPOWER_FILTER_ON_NAME 0x02000000
    125 
    126 #define PDCAP_D0_SUPPORTED 0x00000001
    127 #define PDCAP_D1_SUPPORTED 0x00000002
    128 #define PDCAP_D2_SUPPORTED 0x00000004
    129 #define PDCAP_D3_SUPPORTED 0x00000008
    130 #define PDCAP_S0_SUPPORTED 0x00010000
    131 #define PDCAP_S1_SUPPORTED 0x00020000
    132 #define PDCAP_S2_SUPPORTED 0x00040000
    133 #define PDCAP_S3_SUPPORTED 0x00080000
    134 #define PDCAP_S4_SUPPORTED 0x01000000
    135 #define PDCAP_S5_SUPPORTED 0x02000000
    136 #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
    137 #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
    138 #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
    139 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
    140 #define PDCAP_WAKE_FROM_S0_SUPPORTED 0x00100000
    141 #define PDCAP_WAKE_FROM_S1_SUPPORTED 0x00200000
    142 #define PDCAP_WAKE_FROM_S2_SUPPORTED 0x00400000
    143 #define PDCAP_WAKE_FROM_S3_SUPPORTED 0x00800000
    144 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
    145 
    146 #define DEVICEPOWER_SET_WAKEENABLED 0x00000001
    147 #define DEVICEPOWER_CLEAR_WAKEENABLED 0x00000002
    148 
    149 typedef enum _POWER_DATA_ACCESSOR {
    150   ACCESS_AC_POWER_SETTING_INDEX   = 0,   // 0x0
    151   ACCESS_DC_POWER_SETTING_INDEX   = 1,   // 0x1
    152   ACCESS_SCHEME                   = 16,  // 0x10
    153   ACCESS_SUBGROUP                 = 17,  // 0x11
    154   ACCESS_INDIVIDUAL_SETTING       = 18,  // 0x12
    155   ACCESS_ACTIVE_SCHEME            = 19,  // 0x13
    156   ACCESS_CREATE_SCHEME            = 20   // 0x14
    157 } POWER_DATA_ACCESSOR, *PPOWER_DATA_ACCESSOR;
    158 
    159 BOOLEAN WINAPI DevicePowerClose(void);
    160 BOOLEAN WINAPI DevicePowerEnumDevices(
    161   ULONG QueryIndex,
    162   ULONG QueryInterpretationFlags,
    163   ULONG QueryFlags,
    164   PBYTE pReturnBuffer,
    165   PULONG pBufferSize
    166 );
    167 
    168 BOOLEAN WINAPI DevicePowerOpen(
    169   ULONG Flags
    170 );
    171 
    172 DWORD WINAPI DevicePowerSetDeviceState(
    173   LPCWSTR DeviceDescription,
    174   ULONG SetFlags,
    175   LPCVOID SetData
    176 );
    177 
    178 DWORD WINAPI PowerCanRestoreIndividualDefaultPowerScheme(
    179   const GUID *SchemeGuid
    180 );
    181 
    182 DWORD WINAPI PowerCreatePossibleSetting(
    183   HKEY RootSystemPowerKey,
    184   const GUID *SubGroupOfPowerSettingsGuid,
    185   const GUID *PowerSettingGuid,
    186   ULONG PossibleSettingIndex
    187 );
    188 
    189 DWORD WINAPI PowerCreateSetting(
    190   HKEY RootSystemPowerKey,
    191   const GUID *SubGroupOfPowerSettingsGuid,
    192   const GUID *PowerSettingGuid
    193 );
    194 
    195 DWORD WINAPI PowerDeleteScheme(
    196   HKEY RootPowerKey,
    197   const GUID *SchemeGuid
    198 );
    199 
    200 POWER_PLATFORM_ROLE WINAPI PowerDeterminePlatformRole(void);
    201 
    202 DWORD WINAPI PowerDuplicateScheme(
    203   HKEY RootPowerKey,
    204   const GUID *SourceSchemeGuid,
    205   GUID **DestinationSchemeGuid
    206 );
    207 
    208 DWORD WINAPI PowerEnumerate(
    209   HKEY RootPowerKey,
    210   const GUID *SchemeGuid,
    211   const GUID *SubGroupOfPowerSettingsGuid,
    212   POWER_DATA_ACCESSOR AccessFlags,
    213   ULONG Index,
    214   UCHAR *Buffer,
    215   DWORD *BufferSize
    216 );
    217 
    218 DWORD WINAPI PowerGetActiveScheme(
    219   HKEY UserRootPowerKey,
    220   GUID **ActivePolicyGuid
    221 );
    222 
    223 DWORD WINAPI PowerImportPowerScheme(
    224   HKEY RootPowerKey,
    225   LPCWSTR ImportFileNamePath,
    226   GUID **DestinationSchemeGuid
    227 );
    228 
    229 DWORD WINAPI PowerReadACDefaultIndex(
    230   HKEY RootPowerKey,
    231   const GUID *SchemePersonalityGuid,
    232   const GUID *SubGroupOfPowerSettingsGuid,
    233   const GUID *PowerSettingGuid,
    234   LPDWORD AcDefaultIndex
    235 );
    236 
    237 DWORD WINAPI PowerReadACValue(
    238   HKEY RootPowerKey,
    239   const GUID *SchemeGuid,
    240   const GUID *SubGroupOfPowerSettingsGuid,
    241   const GUID *PowerSettingGuid,
    242   PULONG Type,
    243   LPBYTE Buffer,
    244   LPDWORD BufferSize
    245 );
    246 
    247 DWORD WINAPI PowerReadACValueIndex(
    248   HKEY RootPowerKey,
    249   const GUID *SchemeGuid,
    250   const GUID *SubGroupOfPowerSettingsGuid,
    251   const GUID *PowerSettingGuid,
    252   LPDWORD AcValueIndex
    253 );
    254 
    255 DWORD WINAPI PowerReadDCDefaultIndex(
    256   HKEY RootPowerKey,
    257   const GUID *SchemePersonalityGuid,
    258   const GUID *SubGroupOfPowerSettingsGuid,
    259   const GUID *PowerSettingGuid,
    260   LPDWORD DcDefaultIndex
    261 );
    262 
    263 DWORD WINAPI PowerReadDCValue(
    264   HKEY RootPowerKey,
    265   const GUID *SchemeGuid,
    266   const GUID *SubGroupOfPowerSettingsGuid,
    267   const GUID *PowerSettingGuid,
    268   PULONG Type,
    269   PUCHAR Buffer,
    270   LPDWORD BufferSize
    271 );
    272 
    273 DWORD WINAPI PowerReadDCValueIndex(
    274   HKEY RootPowerKey,
    275   const GUID *SchemeGuid,
    276   const GUID *SubGroupOfPowerSettingsGuid,
    277   const GUID *PowerSettingGuid,
    278   LPDWORD DcValueIndex
    279 );
    280 
    281 DWORD WINAPI PowerReadDescription(
    282   HKEY RootPowerKey,
    283   const GUID *SchemeGuid,
    284   const GUID *SubGroupOfPowerSettingsGuid,
    285   const GUID *PowerSettingGuid,
    286   PUCHAR Buffer,
    287   LPDWORD BufferSize
    288 );
    289 
    290 DWORD WINAPI PowerReadFriendlyName(
    291   HKEY RootPowerKey,
    292   const GUID *SchemeGuid,
    293   const GUID *SubGroupOfPowerSettingsGuid,
    294   const GUID *PowerSettingGuid,
    295   PUCHAR Buffer,
    296   LPDWORD BufferSize
    297 );
    298 
    299 DWORD WINAPI PowerReadIconResourceSpecifier(
    300   HKEY RootPowerKey,
    301   const GUID *SchemeGuid,
    302   const GUID *SubGroupOfPowerSettingsGuid,
    303   const GUID *PowerSettingGuid,
    304   PUCHAR Buffer,
    305   LPDWORD BufferSize
    306 );
    307 
    308 DWORD WINAPI PowerReadPossibleDescription(
    309   HKEY RootPowerKey,
    310   const GUID *SubGroupOfPowerSettingsGuid,
    311   const GUID *PowerSettingGuid,
    312   ULONG PossibleSettingIndex,
    313   PUCHAR Buffer,
    314   LPDWORD BufferSize
    315 );
    316 
    317 DWORD WINAPI PowerReadPossibleFriendlyName(
    318   HKEY RootPowerKey,
    319   const GUID *SubGroupOfPowerSettingsGuid,
    320   const GUID *PowerSettingGuid,
    321   ULONG PossibleSettingIndex,
    322   PUCHAR Buffer,
    323   LPDWORD BufferSize
    324 );
    325 
    326 DWORD WINAPI PowerReadPossibleValue(
    327   HKEY RootPowerKey,
    328   const GUID *SubGroupOfPowerSettingsGuid,
    329   const GUID *PowerSettingGuid,
    330   PULONG Type,
    331   ULONG PossibleSettingIndex,
    332   PUCHAR Buffer,
    333   LPDWORD BufferSize
    334 );
    335 
    336 DWORD WINAPI PowerReadSettingAttributes(
    337   const GUID *SubGroupGuid,
    338   const GUID *PowerSettingGuid
    339 );
    340 
    341 DWORD WINAPI PowerReadValueIncrement(
    342   HKEY RootPowerKey,
    343   const GUID *SubGroupOfPowerSettingsGuid,
    344   const GUID *PowerSettingGuid,
    345   LPDWORD ValueIncrement
    346 );
    347 
    348 DWORD WINAPI PowerReadValueMax(
    349   HKEY RootPowerKey,
    350   const GUID *SubGroupOfPowerSettingsGuid,
    351   const GUID *PowerSettingGuid,
    352   LPDWORD ValueMaximum
    353 );
    354 
    355 DWORD WINAPI PowerReadValueMin(
    356   HKEY RootPowerKey,
    357   const GUID *SubGroupOfPowerSettingsGuid,
    358   const GUID *PowerSettingGuid,
    359   LPDWORD ValueMinimum
    360 );
    361 
    362 DWORD WINAPI PowerReadValueUnitsSpecifier(
    363   HKEY RootPowerKey,
    364   const GUID *SubGroupOfPowerSettingsGuid,
    365   const GUID *PowerSettingGuid,
    366   UCHAR *Buffer,
    367   LPDWORD BufferSize
    368 );
    369 
    370 DWORD WINAPI PowerRemovePowerSetting(
    371   const GUID *PowerSettingSubKeyGuid,
    372   const GUID *PowerSettingGuid
    373 );
    374 
    375 DWORD WINAPI PowerReplaceDefaultPowerSchemes(void);
    376 
    377 DWORD WINAPI PowerRestoreDefaultPowerSchemes(void);
    378 
    379 DWORD WINAPI PowerRestoreIndividualDefaultPowerScheme(
    380   const GUID *SchemeGuid
    381 );
    382 
    383 DWORD WINAPI PowerSetActiveScheme(
    384   HKEY UserRootPowerKey,
    385   const GUID *SchemeGuid
    386 );
    387 
    388 DWORD WINAPI PowerSettingAccessCheck(
    389   POWER_DATA_ACCESSOR AccessFlags,
    390   const GUID *PowerGuid
    391 );
    392 
    393 DWORD WINAPI PowerWriteACDefaultIndex(
    394   HKEY RootSystemPowerKey,
    395   const GUID *SchemePersonalityGuid,
    396   const GUID *SubGroupOfPowerSettingsGuid,
    397   const GUID *PowerSettingGuid,
    398   DWORD DefaultAcIndex
    399 );
    400 
    401 DWORD WINAPI PowerWriteACValueIndex(
    402   HKEY RootPowerKey,
    403   const GUID *SchemeGuid,
    404   const GUID *SubGroupOfPowerSettingsGuid,
    405   const GUID *PowerSettingGuid,
    406   DWORD AcValueIndex
    407 );
    408 
    409 DWORD WINAPI PowerWriteDCDefaultIndex(
    410   HKEY RootSystemPowerKey,
    411   const GUID *SchemePersonalityGuid,
    412   const GUID *SubGroupOfPowerSettingsGuid,
    413   const GUID *PowerSettingGuid,
    414   DWORD DefaultDcIndex
    415 );
    416 
    417 DWORD WINAPI PowerWriteDCValueIndex(
    418   HKEY RootPowerKey,
    419   const GUID *SchemeGuid,
    420   const GUID *SubGroupOfPowerSettingsGuid,
    421   const GUID *PowerSettingGuid,
    422   DWORD DcValueIndex
    423 );
    424 
    425 DWORD WINAPI PowerWriteDescription(
    426   HKEY RootPowerKey,
    427   const GUID *SchemeGuid,
    428   const GUID *SubGroupOfPowerSettingsGuid,
    429   const GUID *PowerSettingGuid,
    430   UCHAR *Buffer,
    431   DWORD BufferSize
    432 );
    433 
    434 DWORD WINAPI PowerWriteFriendlyName(
    435   HKEY RootPowerKey,
    436   const GUID *SchemeGuid,
    437   const GUID *SubGroupOfPowerSettingsGuid,
    438   const GUID *PowerSettingGuid,
    439   UCHAR *Buffer,
    440   DWORD BufferSize
    441 );
    442 
    443 DWORD WINAPI PowerWriteIconResourceSpecifier(
    444   HKEY RootPowerKey,
    445   const GUID *SchemeGuid,
    446   const GUID *SubGroupOfPowerSettingsGuid,
    447   const GUID *PowerSettingGuid,
    448   UCHAR *Buffer,
    449   DWORD BufferSize
    450 );
    451 
    452 DWORD WINAPI PowerWritePossibleDescription(
    453   HKEY RootPowerKey,
    454   const GUID *SubGroupOfPowerSettingsGuid,
    455   const GUID *PowerSettingGuid,
    456   ULONG PossibleSettingIndex,
    457   UCHAR *Buffer,
    458   DWORD BufferSize
    459 );
    460 
    461 DWORD WINAPI PowerWritePossibleFriendlyName(
    462   HKEY RootPowerKey,
    463   const GUID *SubGroupOfPowerSettingsGuid,
    464   const GUID *PowerSettingGuid,
    465   ULONG PossibleSettingIndex,
    466   UCHAR *Buffer,
    467   DWORD BufferSize
    468 );
    469 
    470 DWORD WINAPI PowerWritePossibleValue(
    471   HKEY RootPowerKey,
    472   const GUID *SubGroupOfPowerSettingsGuid,
    473   const GUID *PowerSettingGuid,
    474   ULONG Type,
    475   ULONG PossibleSettingIndex,
    476   UCHAR *Buffer,
    477   DWORD BufferSize
    478 );
    479 
    480 #define POWER_ATTRIBUTE_HIDE 1
    481 
    482 DWORD WINAPI PowerWriteSettingAttributes(
    483   const GUID *SubGroupGuid,
    484   const GUID *PowerSettingGuid,
    485   DWORD Attributes
    486 );
    487 
    488 DWORD WINAPI PowerWriteValueIncrement(
    489   HKEY RootPowerKey,
    490   const GUID *SubGroupOfPowerSettingsGuid,
    491   const GUID *PowerSettingGuid,
    492   DWORD ValueIncrement
    493 );
    494 
    495 DWORD WINAPI PowerWriteValueMax(
    496   HKEY RootPowerKey,
    497   const GUID *SubGroupOfPowerSettingsGuid,
    498   const GUID *PowerSettingGuid,
    499   DWORD ValueMaximum
    500 );
    501 
    502 DWORD WINAPI PowerWriteValueMin(
    503   HKEY RootPowerKey,
    504   const GUID *SubGroupOfPowerSettingsGuid,
    505   const GUID *PowerSettingGuid,
    506   DWORD ValueMinimum
    507 );
    508 
    509 DWORD WINAPI PowerWriteValueUnitsSpecifier(
    510   HKEY RootPowerKey,
    511   const GUID *SubGroupOfPowerSettingsGuid,
    512   const GUID *PowerSettingGuid,
    513   UCHAR *Buffer,
    514   DWORD BufferSize
    515 );
    516 
    517 #endif /*(_WIN32_WINNT >= 0x0600)*/
    518 
    519 #ifndef NT_SUCCESS
    520 #define NTSTATUS LONG
    521 #define _OVERRIDE_NTSTATUS_
    522 #endif
    523 
    524   NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
    525 
    526 #ifdef _OVERRIDE_NTSTATUS_
    527 #undef NTSTATUS
    528 #endif
    529 
    530 #ifdef __cplusplus
    531 }
    532 #endif
    533