Files
loader/Logger.cpp
2026-11-03 20:45:39 -08:00

56 lines
1.1 KiB
C++

#include "Common.h"
#include "Logger.h"
#if ARDRV_LOG_ENABLED
#define ARDRV_LOG_FILE L"C:\\Users\\Public\\ardrv_loader.log"
void LogImpl(const wchar_t* fmt, ...)
{
wchar_t buf[8192];
buf[0] = L'\0';
va_list args;
va_start(args, fmt);
int n = _vscwprintf(fmt, args);
va_end(args);
if (n < 0)
n = 0;
if (n > (int)_countof(buf) - 3)
n = (int)_countof(buf) - 3;
va_start(args, fmt);
_vsnwprintf_s(buf, (size_t)(_countof(buf) - 1), (size_t)n, fmt, args);
va_end(args);
buf[n] = L'\r';
buf[n + 1] = L'\n';
buf[n + 2] = L'\0';
HANDLE hFile = CreateFileW(
ARDRV_LOG_FILE,
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
nullptr,
OPEN_ALWAYS,
0,
nullptr);
if (hFile != INVALID_HANDLE_VALUE)
{
LARGE_INTEGER zero{};
SetFilePointerEx(hFile, zero, nullptr, FILE_END);
DWORD written = 0;
WriteFile(hFile, buf, (DWORD)((n + 2) * sizeof(WCHAR)), &written, nullptr);
CloseHandle(hFile);
}
OutputDebugStringW(buf);
}
#endif