Home > Backend Development > C++ > body text

How to Translate Windows API Error Codes into Human-Readable Error Messages?

Linda Hamilton
Release: 2024-11-22 05:57:13
Original
893 people have browsed it

How to Translate Windows API Error Codes into Human-Readable Error Messages?

Retrieving Error Messages from Error Codes: Demystifying GetLastError()

Question:

After invoking Windows API functions, how can we access the corresponding error message in a comprehensible textual format? GetLastError() merely provides numeric error codes.

Answer:

To convert the numerical error code reported by GetLastError() into a meaningful string representation, we employ the following steps:

//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;
}
Copy after login

The above is the detailed content of How to Translate Windows API Error Codes into Human-Readable Error Messages?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template