Создание других записей реестра
Как описано в разделе Создание ключа производительности приложения, компонент, предоставляющий данные счетчика производительности, должен иметь ключ производительности в разделе Службы , а ключ производительности должен содержать значения 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 входной строке, которую вы хотите передать в открытую функцию. Тип данных Export — REG_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