#ifndef BCOMPAT_COMMON_H #define BCOMPAT_COMMON_H #define WIN32_LEAN_AND_MEAN #include #include #include #define DLL_EXPORT __declspec(dllexport) #define getFunction(dllName, functionName) GetProcAddress(GetModuleHandleA(dllName), functionName) #ifndef DLL_NAME #define DLL_NAME "Unknown" #endif void logMSG(LPCSTR msg, LPCSTR level) { char buffer[512]; char name[128]; GetModuleFileName(NULL, name, sizeof(name)); typedef int (__cdecl *sprintfPtr)(char* stream, const char* format, ...); sprintfPtr sprintf = (sprintfPtr) getFunction("msvcrt.dll", "sprintf"); sprintf(buffer, "[%s] [%s | %s] %s", level, name, DLL_NAME, msg); CallNamedPipe(TEXT("\\\\.\\pipe\\bcompat"), buffer, sizeof(buffer), NULL, 0, NULL, NMPWAIT_NOWAIT); } #define _logMsg(level, ...) { \ char buffer[512]; \ typedef int (__cdecl *sprintfPtr)(char* stream, const char* format, ...); \ sprintfPtr sprintf = (sprintfPtr) getFunction("msvcrt.dll", "sprintf"); \ sprintf(buffer, __VA_ARGS__); \ logMSG(buffer, level); \ }"" #define logDebug(...) _logMsg("DEBUG", __VA_ARGS__) #define logInfo(...) _logMsg("INFO", __VA_ARGS__) #define logWarn(...) _logMsg("WARN", __VA_ARGS__) #define logError( ...) _logMsg("ERROR", __VA_ARGS__) #endif //BCOMPAT_COMMON_H