Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ FormatMessage失败,错误代码317_C++_Visual C++_Windows Ce - Fatal编程技术网

C++ FormatMessage失败,错误代码317

C++ FormatMessage失败,错误代码317,c++,visual-c++,windows-ce,C++,Visual C++,Windows Ce,当我执行以下代码段时,它失败了,错误代码为317。如何解决这个问题?我们在项目中使用Unicode字符集 char* pszMessgeBuffer = NULL; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwErrorId,

当我执行以下代码段时,它失败了,错误代码为317。如何解决这个问题?我们在项目中使用Unicode字符集

  char* pszMessgeBuffer = NULL;
  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dwErrorId,
        0, // Default language
        (LPTSTR) &pszMessgeBuffer,
        0,
        NULL )

使用Visual Studio中的错误代码查找,317被描述为

系统找不到消息文本 对于消息中的消息编号0x%1 %2的文件

这意味着系统中不存在前一个错误代码的消息描述。来自系统的带有标志的MSDN文档
格式化消息\u
说明:

并非所有基于CE的Windows嵌入式系统 设备将包含该系统 消息表资源。这是一个 窗口的可选部分 嵌入式CE操作系统及其应用 经常被移走以节省空间


使用Visual Studio中的错误代码查找,317被描述为

系统找不到消息文本 对于消息中的消息编号0x%1 %2的文件

这意味着系统中不存在前一个错误代码的消息描述。来自系统的带有标志的MSDN文档
格式化消息\u
说明:

并非所有基于CE的Windows嵌入式系统 设备将包含该系统 消息表资源。这是一个 窗口的可选部分 嵌入式CE操作系统及其应用 经常被移走以节省空间


我认为错误317是使用Win32函数lsantStatusToInError(87)的结果,其中winstatus 87表示“参数不正确”

我认为错误317是使用Win32函数lsantStatusToInError(87)的结果,其中winstatus 87表示“参数不正确”

函数末尾是否缺少分号?@iammilind:OP可以编译,因此我认为没有。错误代码317是
错误\u MR\u MID\u未找到
。所以我猜
dwErrorId
在某种程度上是错误的。数字必须是有效的系统消息。这是一个邪恶的施法,它永远不能正常工作。它只会阻止编译器告诉你你做错了什么。使用FormatMessageA()或传递一个wchar\u t[]。为什么要使用char*然后将其转换为宽(LPTSTR)字符串?这是非常糟糕的形式,不会使目标成为char*。它并没有导致这个特定的错误,但它仍然是一个糟糕的形式。在这里使用它表示您可能在其他地方也在使用它。函数末尾是否缺少分号?@iammilind:OP可以编译,所以我认为没有。错误代码317是
Error\u MR\u MID\u NOT\u FOUND
。所以我猜
dwErrorId
在某种程度上是错误的。数字必须是有效的系统消息。这是一个邪恶的施法,它永远不能正常工作。它只会阻止编译器告诉你你做错了什么。使用FormatMessageA()或传递一个wchar\u t[]。为什么要使用char*然后将其转换为宽(LPTSTR)字符串?这是非常糟糕的形式,不会使目标成为char*。它并没有导致这个特定的错误,但它仍然是一个糟糕的形式。在这里使用表示您可能也在其他地方使用它。