その他のレジストリ エントリの作成
「アプリケーションのパフォーマンス キーの作成」で説明されているように、パフォーマンス カウンター データを提供するコンポーネントには、サービス キーの下にパフォーマンス キーが必要であり、パフォーマンス キーには Library、Open、Collect、Close の値が含まれている必要があります。 場合によっては、コンポーネントで追加のレジストリ値を構成する必要がある場合があります。
Metadata
MetadataGlobal
および MetadataCostly
は、Windows 10 20H1 以降によって生成されるメタデータのみのクエリです。 これにより、ユーザーは、コストの高い可能性のあるデータ収集を実行せずにメタデータ (オブジェクト情報とカウンター情報) を取得できます。 メタデータのみのクエリは、対応するGlobal
クエリまたはCostly
クエリと同じ結果を返す必要があります。ただし、(NumInstances
マルチインスタンス オブジェクトの場合) または PERF_METADATA_NO_INSTANCES
(単一インスタンス オブジェクトの場合) にPERF_METADATA_MULTIPLE_INSTANCES
設定する必要があり、結果はすべてのPERF_INSTANCE_DEFINITION
ブロックを省略する必要があります。
パフォーマンス DLL で と MetadataCostly
クエリのMetadataGlobal
種類がサポートされている場合は、キーに値をREG_DWORD
追加し、値Collect Supports Metadata
を Performance
1 に設定することで、これを示す必要があります。 が存在しない場合、または 0 に設定されている場合Collect Supports Metadata
、メタデータのみのクエリは または Costly
クエリにGlobal
フォールバックします。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name
\Performance
Collect Supports Metadata = 1
リンケージ
パフォーマンス DLL の OpenPerformanceData 関数は、文字列引数を入力として受け取ります。 開いている関数に入力文字列を指定するには、サービス キーの下にリンケージ キーを含めます。 リンケージ キーには、Export 値が含まれています。 Export の値データを、開いている関数に渡す入力文字列に設定します。 Export のデータ型はREG_MULTI_SZ。
Export が定義されていない場合 (Export は省略可能)、システムは OPENPerformanceData 関数に NULL を渡します。
通常、複数のアプリケーションが同じパフォーマンス DLL を共有している場合、各アプリケーションには リンケージ キーと エクスポート 値が含まれており、どのアプリケーションが DLL を呼び出しているのかを示すコンテキストが提供されます。
レジストリ エントリを次に示します。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name-1
\Linkage
Export = app-1 context strings
\Performance
Library = perfctrs.dll
\application-name-2
\Linkage
Export = app-2 context strings
\Performance
Library = perfctrs.dll
タイムアウト
既定では、パフォーマンス DLL の OpenPerformanceData 関数と CollectPerformanceData 関数は、10,000 ミリ秒以内にを返す必要があります。 そうでない場合、システムは DLL から返されるデータを使用しません。 アプリケーションでは、次の例に示すように、パフォーマンス キーの下に Open Timeout または Collect Timeout レジストリ値を指定することで、タイムアウト値を増減できます。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name
\Performance
Open Timeout = Timeout value for your open function, in milliseconds
Collect Timeout = Timeout value for your collect function, in milliseconds
DOS デバイス
一部のアプリケーション ( DeviceIoControl 関数を使用してカウンターを返すアプリケーション) のパフォーマンス データを取得するには、 CreateFile 関数を使用して、アプリケーションに関連付けられているデバイスを開く必要があります。 この場合、 CreateFile で指定された名前は、次に示すように、レジストリの [DOS デバイス] ノードにもインストールする必要があります。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\Session Manager
\DOS Devices