aboutsummaryrefslogtreecommitdiff
path: root/loader_wsock32_proxy/hookutils.cpp
diff options
context:
space:
mode:
authorpg9182 <96569817+pg9182@users.noreply.github.com>2022-08-08 06:12:11 -0400
committerGeckoEidechse <gecko.eidechse+git@pm.me>2022-08-14 14:37:24 +0200
commitc0e8e576df16171da6f0e68cbfa18123e8d1e7e0 (patch)
treefb157acfec3c1a510644481aade8f7115efb2295 /loader_wsock32_proxy/hookutils.cpp
parentd20cf6f08af37830d3bfc934cef356fa6a1aa102 (diff)
downloadNorthstarLauncher-c0e8e576df16171da6f0e68cbfa18123e8d1e7e0.tar.gz
NorthstarLauncher-c0e8e576df16171da6f0e68cbfa18123e8d1e7e0.zip
Fix most clang/mingw issues (#226)
- Fix include case. - Replace MSVC-specific align with standard alignas. - Type fixes. - Delete operator noexcept. - A few other minor issues. - clang-format everything. - Use c++20 instead of c++17. - Rewrite ERROR macro for launcher_wsock32_proxy. - Use a plain ifstream for the audio.cpp wavStream. Note: When compiling with clang, you'll need -municode. Related to #212.
Diffstat (limited to 'loader_wsock32_proxy/hookutils.cpp')
-rw-r--r--loader_wsock32_proxy/hookutils.cpp91
1 files changed, 49 insertions, 42 deletions
diff --git a/loader_wsock32_proxy/hookutils.cpp b/loader_wsock32_proxy/hookutils.cpp
index f933f993..ed2b6c3a 100644
--- a/loader_wsock32_proxy/hookutils.cpp
+++ b/loader_wsock32_proxy/hookutils.cpp
@@ -1,54 +1,61 @@
+#include <cstdio>
+
#include "pch.h"
#include "../NorthstarDedicatedTest/hookutils.h"
-#define ERROR(...) { char err[2048]; sprintf_s(err, __VA_ARGS__); MessageBoxA(GetForegroundWindow(), err, "Northstar Wsock32 Proxy Error", 0); }
+#define HU_ERROR(...) \
+ { \
+ char err[2048]; \
+ snprintf(err, sizeof(err), __VA_ARGS__); \
+ MessageBoxA(GetForegroundWindow(), err, "Northstar Wsock32 Proxy Error", 0); \
+ }
void HookEnabler::CreateHook(LPVOID ppTarget, LPVOID ppDetour, LPVOID* ppOriginal, const char* targetName)
{
- // the macro for this uses ppTarget's name as targetName, and this typically starts with &
- // targetname is used for debug stuff and debug output is nicer if we don't have this
- if (*targetName == '&')
- targetName++;
+ // the macro for this uses ppTarget's name as targetName, and this typically starts with &
+ // targetname is used for debug stuff and debug output is nicer if we don't have this
+ if (*targetName == '&')
+ targetName++;
- if (MH_CreateHook(ppTarget, ppDetour, ppOriginal) == MH_OK)
- {
- HookTarget* target = new HookTarget;
- target->targetAddress = ppTarget;
- target->targetName = (char*)targetName;
+ if (MH_CreateHook(ppTarget, ppDetour, ppOriginal) == MH_OK)
+ {
+ HookTarget* target = new HookTarget;
+ target->targetAddress = ppTarget;
+ target->targetName = (char*)targetName;
- m_hookTargets.push_back(target);
- }
- else
- {
- if (targetName != nullptr)
- {
- ERROR("MH_CreateHook failed for function %s", targetName);
- }
- else
- {
- ERROR("MH_CreateHook failed for unknown function");
- }
- }
+ m_hookTargets.push_back(target);
+ }
+ else
+ {
+ if (targetName != nullptr)
+ {
+ HU_ERROR("MH_CreateHook failed for function %s", targetName);
+ }
+ else
+ {
+ HU_ERROR("MH_CreateHook failed for unknown function");
+ }
+ }
}
HookEnabler::~HookEnabler()
{
- for (auto& hook : m_hookTargets)
- {
- if (MH_EnableHook(hook->targetAddress) != MH_OK)
- {
- if (hook->targetName != nullptr)
- {
- ERROR("MH_EnableHook failed for function %s", hook->targetName);
- }
- else
- {
- ERROR("MH_EnableHook failed for unknown function");
- }
- }
- else
- {
- //ERROR("Enabling hook %s", hook->targetName);
- }
- }
-} \ No newline at end of file
+ for (auto& hook : m_hookTargets)
+ {
+ if (MH_EnableHook(hook->targetAddress) != MH_OK)
+ {
+ if (hook->targetName != nullptr)
+ {
+ HU_ERROR("MH_EnableHook failed for function %s", hook->targetName);
+ }
+ else
+ {
+ HU_ERROR("MH_EnableHook failed for unknown function");
+ }
+ }
+ else
+ {
+ // HU_ERROR("Enabling hook %s", hook->targetName);
+ }
+ }
+}