123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <windows.h>
- #include "w32err.h"
- /*
- * Description: the windows32 version of perror()
- *
- * Returns: a pointer to a static error
- *
- * Notes/Dependencies: I got this from
- * comp.os.ms-windows.programmer.win32
- */
- char *
- map_windows32_error_to_string (DWORD ercode) {
- /* __declspec (thread) necessary if you will use multiple threads */
- __declspec (thread) static char szMessageBuffer[128];
-
- /* Fill message buffer with a default message in
- * case FormatMessage fails
- */
- wsprintf (szMessageBuffer, "Error %ld", ercode);
- /*
- * Special code for winsock error handling.
- */
- if (ercode > WSABASEERR) {
- HMODULE hModule = GetModuleHandle("wsock32");
- if (hModule != NULL) {
- FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
- hModule,
- ercode,
- LANG_NEUTRAL,
- szMessageBuffer,
- sizeof(szMessageBuffer),
- NULL);
- FreeLibrary(hModule);
- }
- } else {
- /*
- * Default system message handling
- */
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- ercode,
- LANG_NEUTRAL,
- szMessageBuffer,
- sizeof(szMessageBuffer),
- NULL);
- }
- return szMessageBuffer;
- }
-
|