Maison >développement back-end >C++ >Comment puis-je convertir les codes d'erreur Windows GetLastError() en messages texte lisibles par l'homme ?

Comment puis-je convertir les codes d'erreur Windows GetLastError() en messages texte lisibles par l'homme ?

DDD
DDDoriginal
2024-11-19 15:29:02586parcourir

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

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

Lors de l'exécution d'appels d'API Windows, la fonction GetLastError() fournit une valeur entière code d'erreur indiquant les problèmes rencontrés. Pour obtenir un message d'erreur plus informatif, suivez ces étapes :

1. Utiliser FormatMessageA :

La fonction FormatMessageA vous permet de convertir un code d'erreur en un message d'erreur textuel. Il nécessite les paramètres suivants :

  • FORMAT_MESSAGE_ALLOCATE_BUFFER : alloue un tampon pour stocker le message.
  • FORMAT_MESSAGE_FROM_SYSTEM : utilise les messages d'erreur fournis par le système.
  • FORMAT_MESSAGE_IGNORE_INSERTS : ignore le message modificateurs (par exemple, "%1").
  • NULL : indique que le message sera formaté sans aucun paramètre.
  • &messageBuffer : pointeur vers le tampon alloué pour le message.

2. Invoquez la fonction :

Appelez FormatMessageA avec les paramètres appropriés, y compris le code d'erreur :

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);

3. Copiez et libérez le message d'erreur :

Après avoir récupéré le message, copiez son contenu dans une chaîne et libérez le tampon alloué à Win32 :

std::string message(messageBuffer, size);
LocalFree(messageBuffer);

En suivant ces instructions, vous pouvez obtenez un message d'erreur détaillé sous forme textuelle à partir du code d'erreur renvoyé par GetLastError(), améliorant ainsi votre compréhension des problèmes rencontrés lors des appels d'API Windows.

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:
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