powrprof.dll を dllimport し、ReadProcessorPwrScheme API を使用して、processorPolicyInfoAc.DemotePercent と ProcessorPolicyInfoAc.PromotePercent にアクセスする必要があります。
以下のコードを参照してください。テストされていませんが、方法が表示されます (このコードを使用して DynamicThrottle 情報を取得すると動作します)。
構造体 PROCESSOR_POWER_POLICY_INFO
{
public uint TimeCheck;
public uint DemoteLimit;
public uint PromoteLimit;
パブリック バイト DemotePercent;
パブリックバイトPromotePercent;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
パブリック バイト[] スペア。
public uint AllowBits;
}
構造体 PROCESSOR_POWER_POLICY
{
public uint リビジョン。
パブリック バイト DynamicThrottle;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
パブリック バイト[] スペア。
public uint 予約済み。
public uint PolicyCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public PROCESSOR_POWER_POLICY_INFO[] ポリシー。
}
構造体 MACHINE_PROCESSOR_POWER_POLICY
{
public uint リビジョン。// ULONG
public PROCESSOR_POWER_POLICY ProcessorPolicyAc;
public PROCESSOR_POWER_POLICY ProcessorPolicyDc;
}
[DllImport("powrprof.dll", SetLastError = true)]
static extern bool ReadProcessorPwrScheme(uint uiID, out MACHINE_PROCESSOR_POWER_POLICY pMachineProcessorPowerPolicy);
public void ReadProcessorPowerScheme()
{
MACHINE_PROCESSOR_POWER_POLICY machinep = new MACHINE_PROCESSOR_POWER_POLICY();
uint スキーム = 0;
if (ReadProcessorPwrScheme(scheme, out machinep))
{
//次に、machinep.ProcessorPolicyAc.Policy[]; をループします。配列
//使用: PROCESSOR_POWER_POLICY_INFO processorPolicyInfoAc = mppp.ProcessorPolicyAc.Policy[i];
//使用: processorPolicyInfoAc.DemotePercent;
//使用: processorPolicyInfoAc.PromotePercent;
//そして、Dc についても同じことを忘れないでください (Dc はバッテリーです)。
}
}
エドガー・ロシャ・カルヴァーリョ