Сбой 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 означает "Неверный параметр"

Другие вопросы по тегам