Сообщения об ошибках Windows

Я разрабатываю программу, использующую HIDAPI для связи через USB, и похоже, что функция API hid_error () возвращает последнее сообщение об ошибке непосредственно из окон, а не сообщение, сгенерированное самим API. Где я могу найти список всех возможных сообщений об ошибках, чтобы я мог более точно отреагировать на ошибку?

0

Решение

Я полагаю, что вы ищете следующие две функции ниже в дополнение к обычным кодам ошибок в Windows, документация которых, кажется, является первым результатом в Google.

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

1) Получение самого кода ошибки.

Функция GetLastError

Получает значение кода последней ошибки вызывающего потока. Код последней ошибки поддерживается для каждого потока. Несколько потоков не перезаписывают код последней ошибки друг друга.

2) Получение строки из кода ошибки.

Функция FormatMessage

Форматирует строку сообщения. Функция требует определения сообщения в качестве ввода. Определение сообщения может быть получено из буфера, переданного в функцию. Он может быть получен из ресурса таблицы сообщений в уже загруженном модуле. Или вызывающая сторона может попросить функцию выполнить поиск сообщения в системных ресурсах таблицы сообщений системы. Функция находит определение сообщения в ресурсе таблицы сообщений на основе идентификатора сообщения и идентификатора языка. Функция копирует форматированный текст сообщения в выходной буфер, обрабатывая любые встроенные последовательности вставки, если требуется.

В Qt например, для приложения это будет более естественный способ решения этой проблемы:

QString QtWin :: errorStringFromHresult (HRESULT hresult)

Возвращает кодовое имя указанного идентификатора ошибки hresult (обычно это имя макроса WinAPI) или пустую строку, если сообщение неизвестно.

2

Другие решения

Вы могли бы взглянуть на Коды системных ошибок.

1

По вопросам рекламы [email protected]