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

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

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

Синтаксис

PDH_FUNCTION PdhEnumObjectsA(
  [in]      LPCSTR  szDataSource,
  [in]      LPCSTR  szMachineName,
  [out]     PZZSTR  mszObjectList,
  [in, out] LPDWORD pcchBufferSize,
  [in]      DWORD   dwDetailLevel,
  [in]      BOOL    bRefresh
);

Параметры

[in] szDataSource

Строка, завершающаяся значением NULL, указывающая имя файла журнала, используемого для перечисления объектов производительности. Если значение РАВНО NULL, функция использует компьютер, указанный в

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

[in] szMachineName

Строка, завершающаяся значением NULL, которая указывает имя компьютера, используемого для перечисления объектов производительности.

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

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

[out] mszObjectList

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

[in, out] pcchBufferSize

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

Windows XP: Добавьте его к требуемому размеру буфера.

[in] dwDetailLevel

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

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

[in] bRefresh

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

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

Значение Значение
TRUE
Кэш объектов автоматически обновляется перед возвратом объектов.
FALSE
Не обновляйте кэш автоматически.

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

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

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

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

Комментарии

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

Примечание

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

Требования

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

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

PdhEnumObjectItems

PdhEnumObjectsH