Maison > développement back-end > C++ > le corps du texte

Comment traduire les codes d'erreur de l'API Windows en messages d'erreur lisibles par l'homme ?

Linda Hamilton
Libérer: 2024-11-22 05:57:13
original
876 Les gens l'ont consulté

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

Récupération des messages d'erreur à partir des codes d'erreur : démystifier GetLastError()

Question :

Après en invoquant les fonctions de l'API Windows, comment pouvons-nous accéder au message d'erreur correspondant dans un format textuel compréhensible ? GetLastError() fournit simplement des codes d'erreur numériques.

Réponse :

Pour convertir le code d'erreur numérique signalé par GetLastError() en une représentation sous forme de chaîne significative, nous utilisons ce qui suit étapes :

//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;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal