56 lines
1.1 KiB
C++
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
|