最小(最大)处理器状态的API,C ++

时间:2014-03-20 04:48:05

标签: c++ processor power-management

关于Windows中以下可用设置选项的问题: 在Windows和电源选项下==>提前功率设置==>处理器电源管理==>最小处理器状态(可以设置为百分比%)

这个值对应的API结构是什么,我想编写一个程序,它可以控制最小和最大处理器状态的百分比。我试过,SYSTEM_POWER_INFO,SYSTEM_POWER_CAPABILITY,..,没有具体提到这个值。

请告知。

此致

2 个答案:

答案 0 :(得分:1)

显然有一个名为WriteProcessorPwrScheme的Windows功能:

BOOLEAN WINAPI WriteProcessorPwrScheme(
  _In_  UINT ID,
  _In_  PMACHINE_PROCESSOR_POWER_POLICY pMachineProcessorPowerPolicy
);

来源:this SO question中的C#答案让我感到惊讶。按照文档查看PMACHINE_PROCESSOR_POWER_POLICY结构中的所有内容。

根据文档,该功能不会影响当前的系统电源策略。您需要致电SetActivePwrScheme

BOOLEAN WINAPI SetActivePwrScheme(
  _In_      UINT uiID,
  _In_opt_  PGLOBAL_POWER_POLICY lpGlobalPowerPolicy,
  _In_opt_  PPOWER_POLICY lpPowerPolicy
);

如果SetActivePwrScheme不起作用或您的Windows版本不支持,则可以致电PowerSetActiveScheme

DWORD WINAPI PowerSetActiveScheme(
  _In_opt_  HKEY UserRootPowerKey,
  _In_      const GUID *SchemeGuid
);

因此,您似乎必须首先使用WriteProcessorPwrScheme创建一个电源方案,这会将索引更改为一组电源方案,然后您必须使用该索引调用SetActivePwrScheme来激活它。 / p>

答案 1 :(得分:1)

您可以使用

修改任何电源方案
PowerWriteACValueIndex()/PowerWriteDCValueIndex()

第一个参数是NULL, 第二个参数 - 所需电源方案的GUID(GUID_MAX_POWER_SAVINGS / GUID_MIN_POWER_SAVINGS / GUID_TYPICAL_POWER_SAVINGS), 第三个参数 - GUID_PROCESSOR_SETTINGS_SUBGROUP, 第4个参数 - GUID_PROCESSOR_THROTTLE_MAXIMUM或GUID_PROCESSOR_THROTTLE_MINIMUM

所有GUID描述都可以在winnt.h中找到