Функция PerfCreateInstance (perflib.h)

Создает экземпляр указанного набора счетчиков. Поставщики используют эту функцию.

Синтаксис

PPERF_COUNTERSET_INSTANCE PerfCreateInstance(
  [in] HANDLE  ProviderHandle,
  [in] LPCGUID CounterSetGuid,
  [in] PCWSTR  Name,
  [in] ULONG   Id
);

Параметры

[in] ProviderHandle

Дескриптор поставщика. Используйте переменную дескриптора, созданную инструментом CTRPP . Имя переменной см. в атрибуте символа элемента provider .

Windows Vista: Функция PerfStartProvider возвращает дескриптор.

[in] CounterSetGuid

GUID, который однозначно идентифицирует набор счетчиков, экземпляр которого требуется создать. Это тот же ИДЕНТИФИКАТОР GUID, который указан в атрибуте GUID элемента counterSet . Используйте переменную GUID, созданную средством CTRPP . Имя переменной см. в атрибуте символа элемента counterSet .

Windows Vista: Переменная GUID недоступна.

[in] Name

Строка Юникода, заканчивающаяся null, которая содержит уникальное имя для этого экземпляра.

[in] Id

Уникальный идентификатор для этого экземпляра набора счетчиков. Идентификатор может быть серийным номером, который увеличивается для каждого нового экземпляра.

Возвращаемое значение

Структура PERF_COUNTERSET_INSTANCE , содержащая экземпляр набора счетчиков или значение NULL , если PERFLIB не удалось создать экземпляр. Кэшируйте этот указатель для использования в последующих вызовах вместо вызова PerfQueryInstance для получения указателя на экземпляр.

Эта функция возвращает значение NULL , если произошла ошибка. Чтобы определить возникную ошибку, вызовите Метод GetLastError.

Комментарии

Поставщик определяет, когда он создает экземпляр. Если данные счетчика являются более статическими, поставщик может создать экземпляр во время инициализации. Например, число процессоров на компьютере будет считаться статическим, поэтому поставщик, предоставляющий данные счетчика для процессоров, может создать экземпляр для каждого процессора на компьютере во время инициализации. Для более динамических счетчиков, таких как счетчики дисков или процессов, поставщики создают новые экземпляры в ответ на добавление нового USB-устройства или создания нового процесса.

Когда поставщик вызывает эту функцию, PERFLIB выделяет локальную память для нового экземпляра и создает блок экземпляра. PERFLIB удаляет память, когда поставщик вызывает функцию PerfDeleteInstance .

Экземпляр содержит необработанные данные счетчика. Поставщики используют следующие три функции для обновления необработанных данных счетчика:

Как правило, поставщик постоянно обновляет данные счетчиков. В качестве альтернативы поставщик может реализовать функцию ControlCallback и использовать код запроса PERF_COLLECT_START для активации обновлений.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header perflib.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

PerfDeleteInstance

PerfQueryInstance