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


Коды ошибок вспомогательных данных производительности

Все вспомогательные функции данных производительности (PDH) возвращают значение типа PDH_STATUS. Если функция выполнена успешно, возвращаемое значение ERROR_SUCCESS. В противном случае функция возвращает системный код ошибки , код ошибки или код ошибки PDH. Чтобы получить текст описания ошибки в приложении, используйте функцию FormatMessage, как показано в следующем примере.

#include <windows.h>
#include <stdio.h>
#include <pdhmsg.h>

void main(void)
{
    HANDLE hPdhLibrary = NULL;
    LPWSTR pMessage = NULL;
    DWORD dwErrorCode = PDH_PLA_ERROR_ALREADY_EXISTS;

    hPdhLibrary = LoadLibrary(L"pdh.dll");
    if (NULL == hPdhLibrary)
    {
        wprintf(L"LoadLibrary failed with %lu\n", GetLastError());
        return;
    }

    if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE |
                       FORMAT_MESSAGE_ALLOCATE_BUFFER |
                       FORMAT_MESSAGE_IGNORE_INSERTS,
                       hPdhLibrary,
                       dwErrorCode,
                       0,
                       (LPWSTR)&pMessage,
                       0,
                       NULL))
    {
        wprintf(L"Format message failed with 0x%x\n", GetLastError());
        return;
    }

    wprintf(L"Formatted message: %ls\n", pMessage);
    LocalFree(pMessage);
}

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

В следующей таблице приведен список кодов ошибок, относящихся к PDH. Эти значения определены в файле заголовка pdhmsg.h.

Код ошибки Описание
0x00000000 (PDH_CSTATUS_VALID_DATA — валидные данные) Возвращенные данные действительны.
0x00000001 (PDH_CSTATUS_NEW_DATA) Возвращаемое значение данных является допустимым и отличается от последнего примера.
0x800007D0 (PDH_CSTATUS_NO_MACHINE) Не удается подключиться к указанному компьютеру или компьютер находится в автономном режиме.
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) Указанный экземпляр отсутствует.
0x800007D2 (PDH_MORE_DATA) Существует больше данных для возврата, чем в предоставленном буфере. Выделите больший буфер и снова вызовите функцию.
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) Элемент данных добавлен в запрос, но не был проверен и недоступен. Другие сведения о состоянии этого элемента данных недоступны.
0x800007D4 (PDH_RETRY) Выбранную операцию следует повторить.
0x800007D5 (PDH_NO_DATA) Нет возвращаемых данных.
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) Обнаружен счетчик с отрицательным значением знаменателя.
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) Обнаружен счетчик с отрицательным базовым значением времени.
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) Обнаружен счетчик с отрицательным значением.
0x800007D9 (PDH_диалог_отменён) Пользователь отменил диалоговое окно.
0x800007DA (PDH_END_OF_LOG_FILE) Был достигнут конец файла журнала.
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) Время ожидания истекло, пока ожидалось завершение потока асинхронной коллекции счетчиков.
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) Не удается изменить источник данных по умолчанию в режиме реального времени. Существуют сессии запросов в режиме реального времени, собирающие данные счетчика.
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) Указанный объект не найден в системе.
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) Не удалось найти указанный счетчик.
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) Возвращаемые данные недопустимы.
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE - Ошибка выделения памяти) Функция PDH не могла выделить достаточно временной памяти для завершения операции. Закройте некоторые приложения или расширьте файл страницы и повторите функцию.
0xC0000BBC (PDH_INVALID_HANDLE) Ссылка не является допустимым объектом PDH.
0xC0000BBD (PDH_INVALID_ARGUMENT) Обязательный аргумент отсутствует или неверный.
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) Не удалось найти указанную функцию.
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) Счетчик не указан.
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) Не удается проанализировать путь счетчика. Проверьте формат и синтаксис указанного пути.
0xC0000BC1 (PDH_INVALID_BUFFER) Буфер, переданный вызывающим объектом, недопустим.
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) Запрошенные данные больше, чем предоставленный буфер. Не удалось вернуть запрошенные данные.
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) Не удается подключиться к запрошенной компьютеру.
0xC0000BC4 (PDH_INVALID_PATH, недопустимый путь) Не удалось интерпретировать указанный путь счетчика.
0xC0000BC5 (PDH_INVALID_INSTANCE) Не удалось прочитать имя экземпляра из указанного пути счетчика.
0xC0000BC6 (PDH_INVALID_DATA) Данные недействительны.
0xC0000BC7 (PDH_NO_DIALOG_DATA) Блок данных диалогового окна отсутствует или недопустим.
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) Не удается прочитать счетчик и/или текст справки с указанного компьютера.
0xC0000BC9 (Ошибка создания файла журнала PDH) Не удалось создать указанный файл журнала.
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) Не удается открыть указанный файл журнала.
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) Указанный тип файла журнала не установлен в этой системе.
0xC0000BCC (PDH_NO_MORE_DATA) Больше данных нет.
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) Указанная запись не найдена в файле журнала.
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) Указанный источник данных — это файл журнала.
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) Указанный источник данных — текущее действие.
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) Не удалось прочитать заголовок файла журнала.
0xC0000BD1 (Файл PDH не найден) Не удалось найти указанный файл.
0xC0000BD2 (PDH_ФАЙЛ_УЖЕ_СУЩЕСТВУЕТ) Файл уже имеет указанное имя файла.
0xC0000BD3 (PDH_NOT_IMPLEMENTED) Функция, на которую идет ссылка, не реализована.
0xC0000BD4 (PDH_СТРОКА_НЕ_НАЙДЕНА) Не удалось найти указанную строку в списке строк имени производительности и строк справки.
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) Не удалось сопоставить файлы данных счетчика производительности. Данные будут считываться из реестра и храниться локально.
0xC0000BD6 (PDH_НЕИЗВЕСТНЫЙ_ФОРМАТ_ЛОГА) Формат указанного файла журнала не распознается библиотекой DLL PDH.
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) Указанное значение команды службы журналов не распознается.
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) Указанный запрос из службы журналов не удалось найти или не удалось открыть.
Ошибка 0xC0000BD9 (PDH_LOGSVC_NOT_OPENED - служба регистрации данных не открыта) Не удалось открыть ключ службы журнала данных производительности. Это может быть связано с недостаточной привилегией или из-за того, что служба не установлена.
0xC0000BDA (PDH_WBEM_ERROR) Произошла ошибка при доступе к хранилищу данных WBEM.
0xC0000BDB (PDH_ACCESS_DENIED) Не удается получить доступ к требуемому компьютеру или службе. Проверьте разрешения и аутентификацию журнальной службы или интерактивного сеанса пользователя, сравнивая их с теми, которые установлены на контролируемом компьютере или службе.
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) Максимальный размер файла журнала слишком мал, чтобы регистрировать выбранные счетчики. В этом файле журнала данные не записываются. Укажите меньший набор счетчиков для журнала или большего размера файла и повторите этот вызов.
0xC0000BDD (PDH_INVALID_DATASOURCE) Не удается подключиться к имени источника данных ODBC.
0xC0000BDE (PDH_INVALID_SQLDB) База данных SQL не содержит допустимый набор таблиц для Perfmon.
0xC0000BDF (PDH_NO_COUNTERS) Для этого набора журналов Perfmon SQL счетчики не были найдены.
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) Сбой вызова SQLAllocStmt с %1.
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) Сбой вызова SQLAllocConnect с %1.
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) Сбой вызова SQLExecDirect с %1.
0xC0000BE3 (PDH_SQL_FETCH_FAILED) Вызов SQLFetch завершился сбоем %1.
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) Ошибка вызова SQLRowCount с %1.
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) Сбой вызова SQLMoreResults с %1.
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) Вызов SQLConnect завершился сбоем с кодом %1.
0xC0000BE7 (PDH_SQL_BIND_FAILED) Сбой вызова функции SQLBindCol с кодом %1.
0xC0000BE8 (PDH_НЕ_МОЖЕТ_ПОДКЛЮЧИТЬСЯ_К_СЕРВЕРУ_WMI) Не удается подключиться к серверу WMI на запрошенном компьютере.
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) Коллекция "%1!s!" уже запущена.
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) Указанное время начала позже времени окончания.
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) Коллекция "%1!s!" не существует.
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) Указанное время окончания уже истекло.
0xC0000BED (PDH_PLA_ERROR_NOSTART) Коллекция "%1!s!" не запустилась; проверьте журнал событий приложения на наличие ошибок.
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS - ошибка: уже существует) Коллекция "%1!s!" уже существует.
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) В типе параметров имеется несоответствие.
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) Указанные данные не ведут к допустимому имени пути.
0xC0000BF1 (PDH_PLA_ОШИБКА_СЕРВИСА) Служба "Журналы производительности & Алерты" не ответила.
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) Передаваемая информация недопустима.
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) Передаваемая информация недопустима.
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG - Имя ошибки слишком длинное) Указанное имя слишком длинное.
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) Неправильный формат журнала SQL. Правильный формат — SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6 (PDH_СЧЁТЧИК_УЖЕ_В_ЗАПРОСЕ) Счетчик производительности в вызов PdhAddCounter уже добавлен в запрос производительности. Этот счетчик игнорируется.
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) Не удается считывать данные счетчика и данные из входных двоичных файлов журнала.
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) По крайней мере один из входных двоичных файлов журнала содержит менее двух примеров данных.
0xC0000BF9 (PDH_OS_LATER_VERSION) Версия операционной системы на компьютере с именем %1 позже, чем на локальном компьютере. Эта операция недоступна на локальном компьютере.
0xC0000BFA (PDH_OS_EARLIER_VERSION) %1 поддерживает %2 или более поздние версии. Проверьте версию операционной системы на компьютере с именем %3.
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) Выходной файл должен содержать более ранние данные, чем добавляемый файл.
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) Оба файла должны иметь одинаковые счетчики, чтобы можно было добавить.
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) Невозможно изменить макет таблицы CounterDetail в базе данных SQL.
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) Система занята. Превышено время ожидания при сборе данных счетчика. Повторите попытку позже или увеличьте в реестре значение CollectTime.