PerfCreateInstance 関数 (perflib.h)
指定したカウンター セットのインスタンスを作成します。 プロバイダーはこの関数を使用します。
構文
PPERF_COUNTERSET_INSTANCE PerfCreateInstance(
[in] HANDLE ProviderHandle,
[in] LPCGUID CounterSetGuid,
[in] PCWSTR Name,
[in] ULONG Id
);
パラメーター
[in] ProviderHandle
プロバイダーのハンドル。 CTRPP ツールによって生成されたハンドル変数を使用します。 変数の名前については、プロバイダー要素の symbol 属性を参照してください。
Windows Vista: PerfStartProvider 関数はハンドルを返します。
[in] CounterSetGuid
インスタンスを作成するカウンター セットを一意に識別する GUID。 これは、counterSet 要素の guid 属性で指定されたのと同じ GUID です。 CTRPP ツールによって生成された GUID 変数を使用します。 変数の名前については、counterSet 要素の symbol 属性を参照してください。
Windows Vista: GUID 変数は使用できません。
[in] Name
このインスタンスの一意の名前を含む Null で終わる Unicode 文字列。
[in] Id
カウンター セットのこのインスタンスの一意識別子。 識別子には、新しいインスタンスごとにインクリメントするシリアル番号を指定できます。
戻り値
カウンター セットのインスタンスを含む PERF_COUNTERSET_INSTANCE 構造体。PERFLIB でインスタンスを作成できなかった場合は NULL 。 このポインターをキャッシュして、 PerfQueryInstance を呼び出してインスタンスへのポインターを取得する代わりに、後の呼び出しで使用します。
エラーが発生した場合、この関数は NULL を 返します。 発生したエラーを特定するには、 GetLastError を呼び出します。
注釈
プロバイダーは、インスタンスを作成するタイミングを決定します。 カウンター データがより静的な場合、プロバイダーは初期化時にインスタンスを作成できます。 たとえば、コンピューター上のプロセッサの数は静的と見なされるため、プロセッサのカウンター データを提供するプロバイダーは、初期化時にコンピューター上の各プロセッサのインスタンスを作成できます。 ディスク カウンターやプロセス カウンターなど、より動的なカウンターの場合、プロバイダーは、新しい USB デバイスが追加されるか、新しいプロセスが作成されることに応答して新しいインスタンスを作成します。
プロバイダーがこの関数を呼び出すと、PERFLIB によって新しいインスタンスのローカル メモリが割り当てられ、インスタンス ブロックがビルドされます。 PERFLIB は、プロバイダーが PerfDeleteInstance 関数を呼び出すときにメモリを削除します。
インスタンスには生カウンター データが含まれています。 プロバイダーは、次の 3 つの関数を使用して生カウンター データを更新します。
通常、プロバイダーはカウンター データを常に最新の状態に保ちます。 別の方法として、プロバイダーは ControlCallback 関数を実装し、 PERF_COLLECT_START 要求コードを使用して更新プログラムをトリガーできます。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | perflib.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |