0

我对此有几乎类似的问题。 FormatMessage 失败,错误代码 317

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

我试图从EventLogWindows 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 )

祝你有美好的一天。。

4

1 回答 1

2

错误 317 是“系统在 %2 的消息文件中找不到消息号 0x%1 的消息文本。” . 这意味着MessageId不是系统已知的错误号。

您正在组合FORMAT_MESSAGE_FROM_HMODULEand FORMAT_MESSAGE_FROM_SYSTEM,这没有意义。你想从哪里得到消息?您想从系统错误消息表中获取它g_hResources还是从系统错误消息表中获取它?从评论中,听起来您想从中获取它g_hResources,在这种情况下您应该删除FORMAT_MESSAGE_FROM_SYSTEM. 如果仍然收到错误 317,则表示您传递的消息号不存在于g_hResources.

于 2011-12-18T15:26:20.323 回答