從錯誤代碼中檢索錯誤消息:揭秘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中文網其他相關文章!