diff --git a/src/windows/winError.c b/src/windows/winError.c new file mode 100644 index 00000000..67d2ca41 --- /dev/null +++ b/src/windows/winError.c @@ -0,0 +1,16 @@ +#include + +static char* winErrorEx(DWORD dwError) { + char* buffer = NULL; + DWORD dwFlags = FORMAT_MESSAGE_MAX_WIDTH_MASK + | FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS; + DWORD dwResult = FormatMessageA(dwFlags, NULL, dwError, 0, (LPSTR)&buffer, 0, NULL); + if (dwResult==0 || buffer==NULL) { + fatal("Failed to get error message from FormatMessageA()"); + } + return buffer; +} + +static char* winError(void) { return winErrorEx(GetLastError()); }