Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übersetze ich Windows-API-Fehlercodes in für Menschen lesbare Fehlermeldungen?

Wie übersetze ich Windows-API-Fehlercodes in für Menschen lesbare Fehlermeldungen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-22 05:57:13895Durchsuche

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

Fehlermeldungen aus Fehlercodes abrufen: GetLastError() entmystifizieren

Frage:

Nachher Wie können wir beim Aufrufen von Windows-API-Funktionen auf die entsprechende Fehlermeldung in einem verständlichen Textformat zugreifen? GetLastError() liefert lediglich numerische Fehlercodes.

Antwort:

Um den von GetLastError() gemeldeten numerischen Fehlercode in eine aussagekräftige Zeichenfolgendarstellung umzuwandeln, verwenden wir Folgendes Schritte:

//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;
}

Das obige ist der detaillierte Inhalt vonWie übersetze ich Windows-API-Fehlercodes in für Menschen lesbare Fehlermeldungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn