PdhEnumObjectItems パフォーマンスオブジェクトのカウンタ及びインスタンスを列挙

Cの宣言:

PDH_STATUS PdhEnumOjectItems(
	IN LPCTSTR Reserved,
	IN LPCTSTR MachineName,
	IN LPCTSTR ObjectName,
	IN LPTSTR Counters,
	IN LPDWORD CounterSize,
	IN LPTSTR Instances,
	IN LPDWRD InstanceSize,
	IN DWORD DetailLevel,
	IN DWORD Flags);

説明:

ObjectNameで指定されたパフォーマンスオブジェクトが持つカウンタ及びインスタンスを列挙し、結果をConters及びIntancesに返す。

引数の意味は以下の通り。
Reserved (IN) NULLでなければならない。
MachineName (IN) どのマシン上のパフォーマンスデータから列挙するかを指定するマシンの名前を表す文字列。NULLを指定可能。
ObjectName (IN) 列挙元のパフォーマンスオブジェクトの名前
Counters (OUT) 列挙されたカウンタの名前の一覧を表すMULTI_SZ型の文字列。ConterSizeが0ならばNULLを指定可。
CounterSize (IN/OUT) Contersのサイズ。関数の実行後に、Countersに設定されたデータのサイズまたは必要なサイズが返される。
Instances (OUT) 列挙されたインスタンスの名前の一覧を表すMULTI_SZ型の文字列。InstanceSizeが0ならばNULLを指定可。
InstanceSize (IN/OUT) Instancesのサイズ。関数の実行後に、Insatncesに設定されたデータのサイズまたは必要なサイズが返される。
DetailLevel (IN) 返される情報の詳細度。
Flags (IN) 0でなければならない。

Cのサンプル:

パフォーマンスオブジェクト「プロセス」のカウンタおよびインスタンスを列挙し、結果を表示する。
/* カウンタおよびインスタンスの列挙 */
void DispPerfObjItems()
{
	char CounterNames[1000];
	char InstanceNames[1000];
	DWORD CounterNameSize = 1000;
	DWORD InstanceNameSize = 1000;
	char *cp;

	/* カウンタおよびインスタンスの一覧の取得 */
	PdhEnumObjectItems(
		NULL, 
		NULL, 
		"Process", 
		CounterNames, 
		&CounterNameSize,
		InstanceNames,
		&InstanceNameSize,
		PERF_DETAIL_WIZARD,
		0);

	/* カウンタ一覧の表示 */
	printf("Counters:\n");
	cp = CounterNames;
	while(*cp != '\0') {
		printf("%s\n", cp);
		cp += lstrlen(cp)+1;
	}

	/* インスタンス一覧の表示 */
	printf("\nInstances:\n");
	cp = InstanceNames;
	while(*cp != '\0') {
		printf("%s\n", cp);
		cp += lstrlen(cp)+1;
	}
}

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

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