首頁 >後端開發 >C++ >如何將 Windows API 錯誤代碼轉換為人類可讀的錯誤訊息?

如何將 Windows API 錯誤代碼轉換為人類可讀的錯誤訊息?

Linda Hamilton
Linda Hamilton原創
2024-11-22 05:57:13915瀏覽

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