c++ - 纠正此错误 :GetLastError 0x13d

标签 c++ c winapi getlasterror formatmessage

在此示例中,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/

相关文章:

c++ - 需要说明将路径转换为长 Unicode 路径或以\\?\开头的路径

c++ - 如何将 CString 转换或转换为 LPWSTR?

c - 使用 C 程序验证 chrome 是否正在运行

windows - 用于从驱动程序库安装驱动程序的 API

c++ - 我们在哪里以及为什么使用 "pointers that point to constants"、 "constant pointers"和 "constant pointers that point to constants"?

c++ - 有什么理由使用运行时断言而不是编译时断言吗?

c - 链表 C - 添加节点后仅打印最后一个值

c - 有没有办法用 C 中的 gets() 过滤输入类型?

c++ - Dev-C++ 在没有 GUI 的情况下在后台运行程序

c++ - 在 C++ 中以任何给定度数(例如 45 度)旋转像素数组