Коды ошибок вспомогательного приложения для получения данных о производительности
Все вспомогательные функции данных производительности (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
.
Код ошибки | Description |
---|---|
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_DIALOG_CANCELLED) | Пользователь отменил диалоговое окно. |
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_LOG_FILE_CREATE_ERROR) | Не удалось создать указанный файл журнала. |
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_FILE_NOT_FOUND) | Не удалось найти указанный файл. |
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) | Файл уже имеет указанное имя файла. |
0xC0000BD3 (PDH_NOT_IMPLEMENTED) | Ссылка на функцию не реализована. |
0xC0000BD4 (PDH_STRING_NOT_FOUND) | Не удалось найти указанную строку в списке имени производительности и помочь текстовым строкам. |
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) | Не удалось сопоставить файлы данных счетчика производительности. Данные будут считываться из реестра и храниться локально. |
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) | Формат указанного файла журнала не распознается библиотекой 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) | Вызов SQLAlloc Подключение произошел с ошибкой %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) | Вызов SQL Подключение произошел сбоем с %1. |
0xC0000BE7 (PDH_SQL_BIND_FAILED) | Сбой вызова SQLBindCol с %1. |
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) | Не удается подключиться к серверу 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_SERVICE_ERROR) | Служба "Журналы производительности и оповещения" не ответила. |
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_COUNTER_ALREADY_IN_QUERY) | Счетчик производительности в вызове 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 . |