首頁  >  文章  >  後端開發  >  如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的文字訊息?

如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的文字訊息?

DDD
DDD原創
2024-11-19 15:29:02551瀏覽

How Can I Convert Windows GetLastError() Error Codes into Human-Readable Textual Messages?

從GetLastError() 錯誤代碼檢索文字錯誤訊息

執行Windows API 呼叫時,GetLastError() 函數提供一個整數指示到的任何問題的錯誤代碼。若要取得更多資訊性錯誤訊息,請依照下列步驟操作:

1.利用FormatMessageA:

FormatMessageA 函數可讓您將錯誤程式碼轉換為文字錯誤訊息。它需要以下參數:

  • FORMAT_MESSAGE_ALLOCATE_BUFFER:分配緩衝區來儲存訊息。
  • FORMAT_MESSAGE_FROM_SYSTEM:使用系統提供的錯誤訊息。
  • FORMAT_MESSAGE_IGNORE_INSERTS:忽略訊息修飾符(例如「%1」)。
  • NULL:表示訊息將被格式化,且不帶任何參數。
  • &messageBuffer:指向訊息分配的緩衝區的指標。

2。呼叫函數:

使用適當的參數呼叫 FormatMessageA,包含錯誤代碼:

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);

3。複製並釋放錯誤訊息:

檢索訊息後,將其內容複製到字串中並釋放Win32 分配的緩衝區:

std::string message(messageBuffer, size);
LocalFree(messageBuffer);

按照以下說明,您可以從GetLastError() 傳回的錯誤碼中取得詳細的文字錯誤訊息,增強您對Windows API 呼叫過程中遇到的問題的理解。

以上是如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的文字訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn