首页  >  文章  >  后端开发  >  如何将 Windows API 错误代码转换为人类可读的错误消息?

如何将 Windows API 错误代码转换为人类可读的错误消息?

Linda Hamilton
Linda Hamilton原创
2024-11-22 05:57:13895浏览

How to Translate Windows API Error Codes into Human-Readable Error Messages?

从错误代码中检索错误消息:揭秘GetLastError()

问题:

之后调用Windows API函数,我们如何在a中获取相应的错误信息易于理解的文本格式? GetLastError() 仅提供数字错误代码。

答案:

要将 GetLastError() 报告的数字错误代码转换为有意义的字符串表示形式,我们采用以下方法步骤:

//Returns the last Win32 error, in string format. Returns an empty string if there is no error.
std::string GetLastErrorAsString()
{
    //Fetch the error message ID (if any)
    DWORD errorMessageID = ::GetLastError();
    if (errorMessageID == 0) {
        return std::string(); //No error message recorded
    }

    LPSTR messageBuffer = nullptr;

    //Request Win32 to translate the error ID into a string representation
    //We specify options to allocate the message buffer dynamically and retrieve the localized system message
    size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                                 NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);

    //Copy the error message into a string
    std::string message(messageBuffer, size);

    //Release the dynamically allocated buffer used by Win32
    LocalFree(messageBuffer);

    return message;
}

以上是如何将 Windows API 错误代码转换为人类可读的错误消息?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn