#include "Base_Hook.h" #ifndef NO_OVERLAY #include #include "Hook_Manager.h" #include "../detours/detours.h" #define WIN32_LEAN_AND_MEAN #define VC_EXTRALEAN #include Base_Hook::Base_Hook(): _library(nullptr) {} Base_Hook::~Base_Hook() { UnhookAll(); } void Base_Hook::BeginHook() { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); } void Base_Hook::EndHook() { DetourTransactionCommit(); } void Base_Hook::UnhookAll() { if (_hooked_funcs.size()) { BeginHook(); std::for_each(_hooked_funcs.begin(), _hooked_funcs.end(), [](std::pair& hook) { DetourDetach(hook.first, hook.second); }); EndHook(); _hooked_funcs.clear(); } } const char* Base_Hook::get_lib_name() const { return ""; } void Base_Hook::HookFunc(std::pair hook) { if( DetourAttach(hook.first, hook.second) == 0 ) _hooked_funcs.emplace_back(hook); } #endif//NO_OVERLAY