FormatMessage получает ошибку 317 при попытке прочитать EventLog

У меня была почти схожая проблема с этим. Сбой FormatMessage с кодом ошибки 317

Разница в том, что ответом является то, что это вызвано "FORMAT_MESSAGE_FROM_SYSTEM" но когда я убираю это, это случается снова.

Я пытаюсь читать с EventLog в Windows Server 2003. Но когда я пытаюсь использовать FormatMessage функция, которую я получаю 317 ошибка.

Интересно, что тот же код работает для Windows Server 2008. Как я могу это исправить или что я могу использовать вместо FormatMessage?

Мой код:

   FormatMessage(FORMAT_MESSAGE_FROM_HMODULE | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_ALLOCATE_BUFFER,
        g_hResources, // handles DLL containing message table 
        MessageId,
        0, // Default language
        (LPWSTR) &pMessage,
        0,
        (va_list*)pArgs )

Хороший день для тебя..

1 ответ

Ошибка 317: "Системе не удалось найти текст сообщения для номера сообщения 0x%1 в файле сообщений для% 2"., Это означает, что MessageId не является номером ошибки, известным системе.

Вы объединяете FORMAT_MESSAGE_FROM_HMODULE а также FORMAT_MESSAGE_FROM_SYSTEM, который не имеет смысла. Откуда вы хотите получить сообщение? Вы хотите получить это от g_hResources или из таблицы сообщений об ошибках системы? Из комментария звучит так, будто вы хотите получить его от g_hResourcesв этом случае вы должны удалить FORMAT_MESSAGE_FROM_SYSTEM, Если вы все еще получаете ошибку 317, то это означает, что номер сообщения, который вы передали, не существует в g_hResources,

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