2026-01-06 09:48:38 +08:00
|
|
|
#include "common/debug.h"
|
2025-03-16 10:38:04 +08:00
|
|
|
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
|
|
|
|
|
const char* ffDebugWin32Error(DWORD errorCode)
|
|
|
|
|
{
|
|
|
|
|
static char buffer[256];
|
|
|
|
|
|
|
|
|
|
DWORD len = FormatMessageA(
|
|
|
|
|
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
|
|
|
NULL,
|
|
|
|
|
(DWORD) errorCode,
|
2026-03-26 22:53:28 +08:00
|
|
|
0,
|
2025-03-16 10:38:04 +08:00
|
|
|
buffer,
|
|
|
|
|
sizeof(buffer),
|
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
if (len == 0) {
|
|
|
|
|
snprintf(buffer, sizeof(buffer), "Unknown error code (%lu)", errorCode);
|
|
|
|
|
} else {
|
|
|
|
|
// Remove trailing newline
|
2026-03-26 23:31:59 +08:00
|
|
|
while (len > 0 && (buffer[len - 1] == '\r' || buffer[len - 1] == '\n')) {
|
|
|
|
|
buffer[--len] = '\0';
|
|
|
|
|
}
|
2025-03-16 10:38:04 +08:00
|
|
|
snprintf(buffer + len - 2, sizeof(buffer) - len + 2, " (%lu)", errorCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
2026-03-14 22:55:16 +08:00
|
|
|
|
|
|
|
|
const char* ffDebugNtStatus(NTSTATUS status)
|
|
|
|
|
{
|
|
|
|
|
return ffDebugWin32Error(RtlNtStatusToDosError(status));
|
|
|
|
|
}
|