尝试读取EventLog时,FormatMessage获取错误317

时间:2011-12-17 16:29:53

标签: visual-c++ windows-server-2003 event-log formatmessage

我遇到了类似的问题。 FormatMessage Fails with error code 317

不同之处在于它被称为答案,这是由"FORMAT_MESSAGE_FROM_SYSTEM"引起的,但当我将其删除时,它会再次发生。

我正在尝试从Windows Server 2003中的EventLog读取。但是当我尝试使用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 个答案:

答案 0 :(得分:2)

错误317是"The system cannot find message text for message number 0x%1 in the message file for %2."。这意味着MessageId不是系统已知的错误编号。

您正在合并FORMAT_MESSAGE_FROM_HMODULEFORMAT_MESSAGE_FROM_SYSTEM,这是没有意义的。你想从哪里得到消息?您想从g_hResources还是从系统错误消息表中获取它?从评论中,您似乎想要从g_hResources获取,在这种情况下,您应该删除FORMAT_MESSAGE_FROM_SYSTEM。如果您仍然收到错误317,则表示您传递的邮件编号在g_hResources中不存在。