Поделиться через


Создание других записей реестра

Как описано в разделе Создание ключа производительности приложения, компонент, предоставляющий данные счетчика производительности, должен иметь ключ производительности в разделе Службы , а ключ производительности должен содержать значения Library, Open, Collect и Close . В некоторых случаях компоненту может потребоваться настроить дополнительные значения реестра.

Метаданные

MetadataGlobalи MetadataCostly — это запросы только для метаданных, созданные Windows 10 20H1 и более поздних версий. Они позволяют пользователю получать метаданные (сведения об объектах и счетчиках), не выполняя сбор потенциально дорогостоящих данных. Запрос только для метаданных должен возвращать те же результаты, что и соответствующий Global запрос или Costly , за исключением того, что NumInstances для объекта с несколькими экземплярами должно быть задано значение PERF_METADATA_MULTIPLE_INSTANCES (для объекта с несколькими экземплярами) или PERF_METADATA_NO_INSTANCES (для объекта с одним экземпляром), а результат должен пропускать все PERF_INSTANCE_DEFINITION блоки.

Если библиотека DLL для производительности поддерживает MetadataGlobal типы запросов и MetadataCostly , она должна указать это, добавив REG_DWORD значение Collect Supports Metadata в ключ Performance и задав значение 1. Если Collect Supports Metadata параметр отсутствует или имеет значение 0, запрос, доступный только для метаданных, будет возвращаться к запросу Global или Costly .

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Services
            \application-name
               \Performance
                  Collect Supports Metadata = 1

Компоновка

Функция OpenPerformanceData библиотеки производительности dll принимает строковый аргумент в качестве входных данных. Чтобы предоставить входную строку для открытой функции, добавьте ключ компоновки в раздел Ключ служб . Ключ компоновки содержит значение Export . Задайте значение для параметра Export входной строке, которую вы хотите передать в открытую функцию. Тип данных ExportREG_MULTI_SZ.

Если параметр Export не определен (параметр Export является необязательным), система передает значение NULL функции OpenPerformanceData .

Как правило, если несколько приложений совместно используют одну и ту же библиотеку DLL производительности, каждое приложение включает ключ компоновки и значение Export , чтобы предоставить контекст о том, какое приложение вызывает библиотеку 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

Время ожидания

По умолчанию функции 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 Devices реестра, как показано ниже:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \Session Manager
               \DOS Devices