Files
fastfetch/src/common/impl/debug_windows.c
T

51 lines
1.1 KiB
C
Raw Normal View History

2026-01-06 09:48:38 +08:00
#include "common/debug.h"
#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,
0,
buffer,
sizeof(buffer),
NULL);
if (len == 0) {
snprintf(buffer, sizeof(buffer), "Unknown error code (%lu)", errorCode);
} else {
// Remove trailing newline
while (len > 0 && (buffer[len - 1] == '\r' || buffer[len - 1] == '\n')) {
buffer[--len] = '\0';
}
2026-03-26 23:41:17 +08:00
snprintf(buffer + len, sizeof(buffer) - len + 2, " (%lu)", errorCode);
}
return buffer;
}
const char* ffDebugNtStatus(NTSTATUS status)
{
return ffDebugWin32Error(RtlNtStatusToDosError(status));
}
2026-03-27 20:14:47 +08:00
static inline DWORD HRESULTToWin32Error(HRESULT hr)
{
if (SUCCEEDED(hr))
return ERROR_SUCCESS;
if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
return HRESULT_CODE(hr);
return ERROR_INTERNAL_ERROR;
}
const char* ffDebugHResult(HRESULT hr)
{
return ffDebugWin32Error(HRESULTToWin32Error(hr));
}