在此示例中,dwerror 是 10045L
。但此代码返回 0x13d 值作为错误。
如何获取格式消息?请看一下。
TCHAR lpMsgBuf[512];
if(!FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL ))
{
wprintf(L"Format message failed with 0x%x\n", GetLastError());
return;
}
最佳答案
0x13d == 317 == ERROR_MR_MID_NOT_FOUND
.
SYSTEM 中不存在您要查找的错误消息。
也许您的错误源自特定的 dll 或 驱动程序。
如果您知道哪个 dll\driver 尝试获取它的句柄并指定 FORMAT_MESSAGE_FROM_HMODULE
而不是 FORMAT_MESSAGE_FROM_SYSTEM
并在对 FormatMessage
的调用中提供句柄作为源.
除此之外,如果您使用 FORMAT_MESSAGE_ALLOCATE_BUFFER
你应该声明一个 LPTSTR
类型的变量喜欢LPTSTR pMsg;
并将其作为 (LPTSTR)&pMsg
传递给 FormatMessage 完成后使用 LocalFree(pMsg)
释放分配的内存。
关于c++ - 纠正此错误 :GetLastError 0x13d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460630/