Maison > développement back-end > C++ > Comment traduire les codes d'erreur de l'API Windows en messages d'erreur lisibles par l'homme ?

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
981 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!

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