Я разрабатываю программу, использующую HIDAPI для связи через USB, и кажется, что функция API hid_error() возвращает последнее сообщение об ошибке прямо из окон, а не сообщение, сгенерированное самим API. Где я могу найти список всех возможных сообщений об ошибках, чтобы я мог более точно реагировать на ошибку?
Я полагаю, что вы ищете следующие две функции ниже, помимо обычных кодов ошибок в Windows, документация которых, по-видимому, является первым результатом в Google.
Первая функция позволит вам проверить код ошибки на кодах системных ошибок и в зависимости от вашего желания (хотя вы не поделились тем, почему вам нужна какая-либо настройка), вы можете либо отобразить собственное сообщение об ошибке, либо просто использовать вторая функция для сохранения этого, когда это возможно. Разумеется, вы также можете сохранить вывод hid_error, поскольку это эквивалентно.
1) Получение самого кода ошибки.
Получает значение кода последней ошибки вызывающего потока. Код последней ошибки поддерживается для каждого потока. Несколько потоков не перезаписывают код последней ошибки.
2) Извлечение строки из кода ошибки.
Форматирует строку сообщения. Функция требует определения сообщения как ввода. Определение сообщения может поступать из буфера, переданного в функцию. Он может исходить из ресурса таблицы сообщений в уже загруженном модуле. Или вызывающий абонент может запросить функцию поиска ресурсов (таблиц) таблицы сообщений для определения сообщения. Функция находит определение сообщения в ресурсе таблицы сообщений на основе идентификатора сообщения и идентификатора языка. Функция копирует форматированный текст сообщения в выходной буфер, обрабатывая любые внедренные последовательности вставки, если требуется.
Например, в приложении Qt
это было бы более естественным способом решения проблемы для вашей настройки:
QString QtWin :: errorStringFromHresult (HRESULT hresult)
Возвращает кодовое имя указанного идентификатора ошибки hresult (обычно это имя макроса WinAPI) или пустую строку, если сообщение неизвестно.
Возможно, вы посмотрите на системные коды ошибок.