次の方法で共有


その他のレジストリ エントリの作成

アプリケーションのパフォーマンス キーの作成」で説明されているように、パフォーマンス カウンター データを提供するコンポーネントには、サービス キーの下にパフォーマンス キーが必要であり、パフォーマンス キーには LibraryOpenCollectClose の値が含まれている必要があります。 場合によっては、コンポーネントで追加のレジストリ値を構成する必要がある場合があります。

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 MetadataPerformance 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