PdhGetFormattedCounterValue 指定した形式によるパフォーマンスカウンタ値の取得

Cの宣言:

PDH_STATUS PdhGetFormattedCounerValue(
	IN HCOUNTER hCounter,
	IN DWORD FormatCode,
	IN LPDWORD CounterType,
	IN PPDH_FMT_COUNTERVALUE CounterValue);

説明:

hCounterで指定されたパフォーマンスカウンタの現在の値を、FormatCodeに従った形式で取得し、結果を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 計算結果には変更を加えない。

Cのサンプル:

ローカルマシン上で既に起動してあるメモ帳のCPU使用率を10秒間計測し、結果を表示する。
/* メモ帳の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);
}

(original text:1999/01/05 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。