1

Win7 で、 を開きControl Panel -> Power Options -> Advanced Settings->Processor power managementます。

最小プロセッサ状態、最大プロセッサ状態を確認できます。
C# でプロセッサの状態の値を取得したい。たとえば、5%、100%。C# でコマンド「powercfg」を使用すると、「monitor-timeout-ac」などの値を取得できません。 プロセッサ状態
の値を取得できません。

どうすればこれを達成できますか?

4

2 に答える 2

1

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 はバッテリーです)。
            }
        }

エドガー・ロシャ・カルヴァーリョ

于 2012-11-16T22:33:55.460 に答える
0

使用する

PowerReadACValueIndex()/PowerReadDCValueIndex()
  1. 第1引数はNULL
  2. 2 番目のパラメーター --GUID必要な電源スキーム ( GUID_MAX_POWER_SAVINGS/ GUID_MIN_POWER_SAVINGS/ GUID_TYPICAL_POWER_SAVINGS)
  3. 第 3 パラメーター --GUID_PROCESSOR_SETTINGS_SUBGROUP
  4. 第 4 パラメーター --GUID_PROCESSOR_THROTTLE_MAXIMUMまたはGUID_PROCESSOR_THROTTLE_MINIMUM
  5. 5 番目のパラメーターは、値のレシーバーです。

すべてのGUID説明はwinnt.hにあります。

于 2014-05-12T05:42:23.583 に答える