0

現在、DirectX プログラムの CPU 使用率の概要を作成しようとしていますが、PdhAddCounter() を介してこの情報を取得できないようです。私のコードは次のようになります。

status = PdhOpenQuery(NULL, 0, &m_queryHandle);
    if(status != ERROR_SUCCESS)
    {
        m_canReadCpu = false;
    }

status = PdhAddCounter(m_queryHandle, TEXT("\\Processor(_Total)\\% processor time"), 0, &m_counterHandle);
    if(status != ERROR_SUCCESS)
    {
        m_canReadCpu = false;
    }

PdhAddCounter 呼び出しの後、私のステータスは = -1073738824 になり、プログラムが失敗します。

Windows 7 64 ビット システムを使用していますが、64 ビット環境で何か別のものを作成する必要がありますか? 助けてくれてありがとう。

4

2 に答える 2

1

注意:PdhAddCounterはロケールに適しています。

応答-1073738824は、PDH_CSTATUS_NO_OBJECT=0xC0000BB8を意味します。APIはその文字列を見つけられませんでした。英語以外のOSを使用していますか?

Windows XP互換のアプリケーションを実行する必要がある場合は、次のような回避策を使用する必要があります:http ://en.verysource.com/code/3604946_1/platforminfo.cpp.html 。

VistaおよびWindows7、8、...の場合、代わりにPdhAddEnglishCounterを使用できます。

于 2013-02-11T08:17:59.017 に答える
0

また、pdh.dll への依存から解放されるGetSystemTimes kernel32 APIを使用することもできます。

ここで私の答えを見てください。

于 2013-12-02T09:01:27.980 に答える