56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#include "stdinclude.hpp"
|
|
|
|
namespace {
|
|
HANDLE g_log_file = INVALID_HANDLE_VALUE;
|
|
|
|
HANDLE get_log_file() {
|
|
if (g_log_file != INVALID_HANDLE_VALUE) {
|
|
return g_log_file;
|
|
}
|
|
|
|
char path[MAX_PATH] = {};
|
|
DWORD len = GetModuleFileNameA(nullptr, path, MAX_PATH);
|
|
if (len == 0 || len >= MAX_PATH) {
|
|
return INVALID_HANDLE_VALUE;
|
|
}
|
|
|
|
char* last_sep = path;
|
|
for (char* p = path; *p != '\0'; ++p) {
|
|
if (*p == '\\' || *p == '/') {
|
|
last_sep = p;
|
|
}
|
|
}
|
|
*last_sep = '\0';
|
|
lstrcatA(path, "\\cgss-http-hook.log");
|
|
|
|
g_log_file = CreateFileA(
|
|
path,
|
|
FILE_APPEND_DATA,
|
|
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
nullptr,
|
|
OPEN_ALWAYS,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
nullptr
|
|
);
|
|
return g_log_file;
|
|
}
|
|
}
|
|
|
|
void hook_log(const char* message) {
|
|
if (!message) {
|
|
return;
|
|
}
|
|
|
|
OutputDebugStringA(message);
|
|
OutputDebugStringA("\r\n");
|
|
|
|
HANDLE log_file = get_log_file();
|
|
if (log_file == INVALID_HANDLE_VALUE) {
|
|
return;
|
|
}
|
|
|
|
DWORD ignored = 0;
|
|
WriteFile(log_file, message, lstrlenA(message), &ignored, nullptr);
|
|
WriteFile(log_file, "\r\n", 2, &ignored, nullptr);
|
|
}
|