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


Проверка кодов состояния данных счетчика

Возвращаемое значение функций PDH указывает на успех или сбой вызова функции, который отличается от состояния данных счетчика. Всегда проверяйте CStatus члена счетчика, возвращаемого в структурах PDH, чтобы убедиться, что возвращаемые данные действительны перед его использованием. Если значение элемента CStatus не указывает на успех, не используйте данные. Ниже приведены возможные значения состояния счетчиков:

Ценность Значение
PDH_CSTATUS_NO_MACHINE PDH не удалось подключиться к компьютеру, указанному в пути счетчика. Если это состояние возвращается при добавлении счетчика, счетчик не полностью инициализирован. При каждом обновлении запроса PDH повторяет подключение. При установке подключения обычное сбор данных возобновляется.
PDH_CSTATUS_NO_OBJECT Указанный компьютер найден, но указанный объект производительности не найден на компьютере. Если это состояние возвращается при добавлении счетчика, указанный счетчик не включается в запрос. Если этот статус возвращается активным счетчиком, данные для этого счетчика недействительны. Каждый раз, когда запрашиваются данные, PDH пытается получить данные счетчика.
PDH_CSTATUS_NO_INSTANCE Указанный экземпляр не найден в объекте. Если этот статус возвращается во время добавления счетчика в запрос, счетчик успешно добавляется в запрос, но данные недоступны, пока конкретный экземпляр не станет доступным и возвращается успешный статус.
PDH_CSTATUS_ОТСУТСТВИЕ_СЧЕТЧИКА Указанный счетчик не найден в указанном объекте. Если этот статус возвращается при добавлении счетчика, то счетчик не добавляется в запрос. Если этот статус возвращается после сбора данных, данные для этого счетчика недействительны. Каждый раз, когда запрашиваются данные, PDH пытается получить эти данные счетчика.
PDH_CSTATUS_INVALID_DATA Счетчик был успешно найден, но возвращенные данные невалидны. Эта ошибка может возникать, если значение счетчика меньше предыдущего значения. (Так как значения счетчика всегда увеличиваются, значение счетчика переполняется и становится равным нулю, когда оно достигает максимального значения.) Еще одна возможная причина — это системный таймер, который работает неправильно.
PDH_CSTATUS_VALID_DATA Данные для счетчика были возвращены успешно, но без изменений с момента последнего чтения счетчика.
PDH_CSTATUS_NEW_DATA Данные для счетчика были возвращены успешно и отличаются от времени последнего чтения счетчика. Код PDH_CSTATUS_NEW_DATA может быть возвращен для счетчика скорости, даже если полученный показатель совпадает с последней выборкой. Это связано с тем, что необработанное значение данных, используемое в определении этого значения состояния, изменилось, а не вычисляемая скорость.
PDH_MORE_DATA (дополнительные данные) Предоставленный буфер не был достаточно велик для хранения всех данных счетчика. Выделите больший буфер и снова выполните функцию.
PDH_CSTATUS_ITEM_NOT_VALIDATED Счетчик был добавлен в запрос, но не был проверен и недоступен. Дополнительные сведения о состоянии этого счетчика недоступны.
PDH_CSTATUS_NO_COUNTERNAME В запросе не указано имя счетчика.
PDH_СТАТУС_ОТСУТСТВИЕ_СЧЁТЧИКА Не удалось найти указанное имя счетчика.
PDH_CSTATUS_NO_OBJECT Не удалось найти указанный объект производительности.
PDH_CALC_NEGATIVE_DENOMINATOR Счетчик имеет отрицательное значение знаменателя.
ПДХ_РАСЧЕТ_ОТРИЦАТЕЛЬНЫЙ_ОСНОВАНИЕ_ВРЕМЕНИ Счетчик имеет отрицательное значение базы времени.
PDH_ВЫЧИСЛИТЬ_ОТРИЦАТЕЛЬНОЕ_ЗНАЧЕНИЕ Счетчик имеет отрицательное значение.
PDH_CSTATUS_NO_COUNTERNAME Путь счетчика не указан.
PDH_CSTATUS_BAD_COUNTERNAME Неправильный формат пути счетчика.