我遇到了类似的问题。 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 )
祝你好运..
答案 0 :(得分:2)
错误317是"The system cannot find message text for message number 0x%1 in the message file for %2."。这意味着MessageId
不是系统已知的错误编号。
您正在合并FORMAT_MESSAGE_FROM_HMODULE
和FORMAT_MESSAGE_FROM_SYSTEM
,这是没有意义的。你想从哪里得到消息?您想从g_hResources
还是从系统错误消息表中获取它?从评论中,您似乎想要从g_hResources
获取,在这种情况下,您应该删除FORMAT_MESSAGE_FROM_SYSTEM
。如果您仍然收到错误317,则表示您传递的邮件编号在g_hResources
中不存在。