PDH_STATUS PdhGetFormattedCounerValue( IN HCOUNTER hCounter, IN DWORD FormatCode, IN LPDWORD CounterType, IN PPDH_FMT_COUNTERVALUE CounterValue);
引数の意味は以下の通り。
hCounter | (IN) | カウンタ値の取得元のカウンタのハンドル。 |
FormatCode | (IN) | 取得結果の返却方法を指定するフラグ。後述の表を参照。 |
CounterType | (OUT) | hCounterで指定されたカウンタの型。NULLを指定可能。 |
CounterValue | (OUT) | 取得結果のカウンタ値。 |
FormatCodeに指定可能なフラグは、二種類ある。それぞれの種類のフラグの論理和を指定することができる。まず、以下のフラグのいずれかが指定可能である。
PDH_FMT_DOUBLE | 倍精度浮動小数点で結果を返す。 |
PDH_FMT_LARGE | 64bit整数値で結果を返す。 |
PDH_FMT_LONG | 32bit整数値で結果を返す。 |
次に、以下のフラグのいずれかが指定可能である。
PDH_FMT_1000 | 計算結果を1000倍したものを返す。 |
PDH_FMT_NOSCALE | 計算結果には変更を加えない。 |
/* メモ帳のCPU使用率を表示 */ void DispTime() { HQUERY hQuery; HCOUNTER hCounter; PDH_FMT_COUNTERVALUE FmtValue; /* 新規クエリーを作成 */ PdhOpenQuery(NULL, 0, &hQuery); /* 既に起動しているメモ帳のCPU使用率のカウンタをクエリーに追加 */ PdhAddCounter(hQuery, "\\Process(notepad#0)\\% Processor Time", 0, &hCounter); /* 計測 */ printf("計測開始...\n"); PdhCollectQueryData(hQuery); Sleep(10000); /* 十秒間待つ */ PdhCollectQueryData(hQuery); printf("計測終了.\n"); /* 今の十秒間での、メモ帳のCPUの使用率を表示 */ PdhGetFormattedCounterValue(hCounter, PDH_FMT_DOUBLE, NULL, &FmtValue); printf("メモ帳のCPU使用率: %f%%\n", FmtValue.doubleValue); /* 終了 */ PdhCloseQuery(hQuery); }