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


Функция PdhEnumObjectItemsA (pdh.h)

Возвращает имена счетчиков и экземпляров указанного объекта, которые существуют на указанном компьютере или в указанном файле журнала.

Чтобы использовать дескриптор для источников данных, используйте функцию PdhEnumObjectItemsH.

Синтаксис

PDH_FUNCTION PdhEnumObjectItemsA(
  [in]      LPCSTR  szDataSource,
  [in]      LPCSTR  szMachineName,
  [in]      LPCSTR  szObjectName,
  [out]     PZZSTR  mszCounterList,
  [in, out] LPDWORD pcchCounterListLength,
  [out]     PZZSTR  mszInstanceList,
  [in, out] LPDWORD pcchInstanceListLength,
  [in]      DWORD   dwDetailLevel,
  [in]      DWORD   dwFlags
);

Параметры

[in] szDataSource

значение NULL-terminated string, указывающее имя файла журнала, используемого для перечисления имен счетчиков и экземпляров. Если null, функция использует компьютер, указанный в

параметр szMachineName для перечисления имен.

[in] szMachineName

строке null-terminated, указывающей имя компьютера, содержащего имена счетчиков и экземпляров, которые требуется перечислить.

Включите ведущие косые черты в имя компьютера, например \computername.

Если параметр szDataSourceNULL, можно задать szMachineName значение null, чтобы указать локальный компьютер.

[in] szObjectName

строке null-terminated, которая указывает имя объекта, счетчик и имена экземпляров которого требуется перечислить.

[out] mszCounterList

Выделенный вызывающим буфером, который получает список null-завершенные имена счетчиков, предоставляемые указанным объектом. Список содержит уникальные имена счетчиков. Список завершается двумя символами NULL. Установите значение NULL, если параметр pcchCounterListLength равен нулю.

[in, out] pcchCounterListLength

Размер буфера mszCounterList в TCHARs. Если нет входных данных и объекта, функция возвращает PDH_MORE_DATA и задает этот параметр требуемому размеру буфера. Если буфер больше требуемого размера, функция задает этот параметр фактическому размеру используемого буфера. Если указанный размер входных данных больше нуля, но меньше требуемого размера, не следует полагаться на возвращаемый размер, чтобы перераспределить буфер.

[out] mszInstanceList

Выделенный вызывающим буфером, который получает список null-завершенных имен экземпляров, предоставленных указанным объектом. Список содержит уникальные имена экземпляров. Список завершается двумя символами NULL. Если pcchInstanceListLength значение NULL равно нулю.

[in, out] pcchInstanceListLength

Размер буфера mszInstanceList в TCHARs. Если нет входных данных и объекта, функция возвращает PDH_MORE_DATA и задает этот параметр требуемому размеру буфера. Если буфер больше требуемого размера, функция задает этот параметр фактическому размеру используемого буфера. Если указанный размер входных данных больше нуля, но меньше требуемого размера, не следует полагаться на возвращаемый размер, чтобы перераспределить буфер.

Если указанный объект не поддерживает экземпляры переменных, возвращаемое значение будет равно нулю. Если указанный объект поддерживает экземпляры переменных, но в настоящее время не имеет экземпляров, возвращается значение 2, что является размером пустой строки списка MULTI_SZ.

[in] dwDetailLevel

Уровень детализации возвращаемых элементов производительности. Будут возвращены все элементы, которые имеют указанный уровень детализации или меньше (уровни перечислены в порядке увеличения). Этот параметр может быть одним из следующих значений.

Ценность Значение
PERF_DETAIL_NOVICE
Уровень детализации новичков.
PERF_DETAIL_ADVANCED
Расширенный уровень детализации пользователя.
PERF_DETAIL_EXPERT
Уровень детализации эксперта.
PERF_DETAIL_WIZARD
Уровень детализации системного конструктора.

[in] dwFlags

Этот параметр должен быть равен нулю.

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

Если функция выполнена успешно, она возвращает ERROR_SUCCESS.

Если функция завершается ошибкой, возвращаемое значение представляет собой код ошибки системы или код ошибки PDH. Ниже приведены возможные значения.

Возвращаемый код Описание
PDH_MORE_DATA
Один из буферов слишком мал, чтобы содержать список имен. Это возвращаемое значение ожидается, если pcchCounterListLength или pcchInstanceListLength равно нулю входных данных. Если указанный размер входных данных больше нуля, но меньше требуемого размера, не следует полагаться на возвращаемый размер, чтобы перераспределить буфер.
PDH_INVALID_ARGUMENT
Недопустимый параметр. Например, в некоторых выпусках можно получить эту ошибку, если указанный размер входных данных больше нуля, но меньше требуемого размера.
PDH_MEMORY_ALLOCATION_FAILURE
Не удалось выделить память для поддержки этой функции.
PDH_CSTATUS_NO_MACHINE
Указанный компьютер находится в автономном режиме или недоступен.
PDH_CSTATUS_NO_OBJECT
Указанный объект не найден на указанном компьютере или в указанном файле журнала.

Замечания

Эта функция должна вызываться дважды, при первом получении требуемого размера буфера (присвойте буферам значение NULL и размерам 0), а также во второй раз, чтобы получить данные.

Последовательные вызовы этой функции возвращают идентичные списки счетчиков и экземпляров, так как PdhEnumObjectItems всегда запрашивает список объектов производительности, определенных последним вызовом PdhEnumObjects или PdhEnumObjectItems. Чтобы обновить список объектов производительности, вызовите PdhEnumObjects со значением флага bRefresh значение TRUE перед вызовом PdhEnumObjectItems.

Порядок имен экземпляра и счетчиков не определен.

Примеры

Пример см. в перечислении объектов процесса.

Заметка

Заголовок pdh.h определяет PdhEnumObjectItems как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка pdh.h
библиотеки Pdh.lib
DLL Pdh.dll

См. также

PdhEnumObjectItemsH

PdhEnumObjects