Windows NT 系の CPU 使用率
PDH (Performance Data Helper) API によって CPU 使用率を取得する.
プログラムをビルドするためには pdh.lib をリンクする必要がある.
#include#include #include int main(void) { HQUERY hQuery; HCOUNTER hCounter; PDH_FMT_COUNTERVALUE fmtValue; /* 新しいクエリーを作成 */ PdhOpenQuery(NULL, 0, &hQuery); /* CPU 使用率のカウンタをクエリーに追加 */ PdhAddCounter(hQuery, "\\Processor(0)\\% Processor Time", 0, &hCounter); /* 計測準備 */ /* 出力される CPU 使用率はある時間間隔の平均値なので 少なくとも 2 回 PdhCollectQueryData を呼び出す必要がある */ PdhCollectQueryData(hQuery); Sleep(1000); /* 計測 */ PdhCollectQueryData(hQuery); /* 計測値を整数で取得 */ PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &fmtValue); printf("%d\n", fmtValue.longValue); /* クエリーを閉じる */ PdhCloseQuery(hQuery); return 0; }
CPU 使用率はクエリーを閉じるまで何度でも測定することができる.
PdhAddCounter に与えるカウンタパスを変更すれば CPU 使用率以外のパフォーマンスも知ることができる.
PdhCollectQueryData はカウンタを更新する関数で,CPU 使用率を知るためには 2 回呼び出す必要がある.
PdhGetFormattedCounterValue は 32 ビット整数の他に double や 64 ビット整数で取得することもできる.
- 参考ページ