如何從Windows API 中的錯誤代碼檢索文字錯誤訊息
在Windows API 中,GetLastError() 函數傳回整數錯誤指示系統調用結果的程式碼。要獲得與此程式碼對應的人類可讀的錯誤訊息,我們可以採用以下技術:
方法1:使用FormatMessage() 函數
FormatMessage( ) 函數提供了一種將錯誤代碼轉換為文字訊息的便捷方法。它需要幾個參數:
範例程式碼:
//Returns the last Win32 error, in string format. Returns an empty string if there is no error. std::string GetLastErrorAsString() { //Get the error message ID, if any. DWORD errorMessageID = ::GetLastError(); if(errorMessageID == 0) { return std::string(); //No error message has been recorded } LPSTR messageBuffer = nullptr; //Ask Win32 to give us the string version of that message ID. //The parameters we pass in, tell Win32 to create the buffer that holds the message for us (because we don't yet know how long the message string will be). 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 std::string. std::string message(messageBuffer, size); //Free the Win32's string's buffer. LocalFree(messageBuffer); return message; }
以上是如何將 Windows API 錯誤代碼轉換為人類可讀的文字訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!