Files
BCompat/common.h

42 lines
1.3 KiB
C

#ifndef BCOMPAT_COMMON_H
#define BCOMPAT_COMMON_H
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#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