FormatMessage получает ошибку 317 при попытке прочитать EventLog - PullRequest
0 голосов
/ 17 декабря 2011

У меня была почти схожая проблема с этим. 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 Ответ

2 голосов
/ 18 декабря 2011

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

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

...