Сбой FormatMessage с кодом ошибки 317
Когда я выполнил следующий фрагмент кода, он завершился ошибкой с кодом ошибки 317. Как можно решить проблему? Мы используем Unicode Character Set для проекта
char* pszMessgeBuffer = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwErrorId,
0, // Default language
(LPTSTR) &pszMessgeBuffer,
0,
NULL )
2 ответа
Используя инструмент поиска кода ошибки из Visual Studio, 317 описывается как
Системе не удалось найти текст сообщения для номера сообщения 0x%1 в файле сообщений для%2.
Это означает, что описание сообщения не существует в системе для предыдущего кода ошибки. Документация MSDN для FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM
говорится, что:
Не все устройства на базе Windows Embedded CE будут содержать системные ресурсы таблицы сообщений. Это выбираемая часть операционной системы Windows Embedded CE, которая часто удаляется для экономии места.
Я думаю, что ошибка 317 является результатом использования функции Win32 LsaNtStatusToWinError(87), где winstatus 87 означает "Неверный параметр"