ホームページ >バックエンド開発 >C++ >Windows GetLastError() エラー コードを人間が読めるメッセージに変換するにはどうすればよいですか?

Windows GetLastError() エラー コードを人間が読めるメッセージに変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 20:38:03937ブラウズ

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

GetLastError() によって返されるエラー コードを解釈する方法

Windows API 呼び出しを呼び出した後、開発者は、根底にあるエラー コードを理解できないエラー状況に遭遇することがあります。失敗の理由が重要です。ネイティブ Win32 API 関数 GetLastError() はエラー コードを提供しますが、このコードは整数として表されるため、その意味を解読することが困難です。

エラー コードをテキスト メッセージに変換する

人間が判読できるエラー メッセージを取得するには、開発者はこれらの数値エラー コードをテキストの説明に変換するメカニズムを必要とします。以下のコード スニペットは、この変換プロセスを示しています。

#include <windows.h>
#include <string>

std::string GetLastErrorAsString()
{
    // Retrieve the error message ID, if available.
    DWORD errorMessageID = ::GetLastError();
    if (errorMessageID == 0) {
        return std::string(); // No error message has been recorded.
    }
    
    LPSTR messageBuffer = nullptr;

    // Instruct Win32 to generate the message string for the provided error ID.
    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);
    
    // Transfer the error message into a std::string.
    std::string message(messageBuffer, size);
    
    // Deallocate Win32's message buffer.
    LocalFree(messageBuffer);
            
    return message;
}

使用法:

この関数を利用するには、API 呼び出しの後に GetLastErrorAsString() を呼び出すだけで、エラーコード。テキストのエラー メッセージを含む std::string が返されます。これは、ユーザーに表示したり、さらなる診断のためにログに記録したりできます。

以上がWindows GetLastError() エラー コードを人間が読めるメッセージに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。