1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-25 01:57:47 +01:00

tweak hook function

This commit is contained in:
FunkyFr3sh 2024-06-02 22:17:26 +02:00
parent 38d442545d
commit 648fe238ca
5 changed files with 14 additions and 14 deletions

View File

@ -125,7 +125,7 @@ extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
extern BOOL g_hook_active; extern BOOL g_hook_active;
extern HOOKLIST g_hook_hooklist[]; extern HOOKLIST g_hook_hooklist[];
void hook_init(BOOL initial_hook); void hook_init();
void hook_exit(); void hook_exit();
void hook_patch_iat(HMODULE hmod, BOOL unhook, char* module_name, char* function_name, PROC new_function); void hook_patch_iat(HMODULE hmod, BOOL unhook, char* module_name, char* function_name, PROC new_function);
void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks, BOOL is_local); void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks, BOOL is_local);

View File

@ -1202,7 +1202,7 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
if (!g_ddraw.wndproc) if (!g_ddraw.wndproc)
{ {
hook_init(FALSE); hook_init();
g_ddraw.wndproc = (WNDPROC)real_SetWindowLongA(g_ddraw.hwnd, GWL_WNDPROC, (LONG)fake_WndProc); g_ddraw.wndproc = (WNDPROC)real_SetWindowLongA(g_ddraw.hwnd, GWL_WNDPROC, (LONG)fake_WndProc);
g_ddraw.gui_thread_id = GetWindowThreadProcessId(g_ddraw.hwnd, NULL); g_ddraw.gui_thread_id = GetWindowThreadProcessId(g_ddraw.hwnd, NULL);

View File

@ -121,7 +121,7 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
} }
timeBeginPeriod(1); timeBeginPeriod(1);
hook_init(TRUE); hook_init();
break; break;
} }
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:

View File

@ -632,9 +632,9 @@ void hook_revert(HOOKLIST* hooks)
} }
} }
void hook_init(BOOL initial_hook) void hook_init()
{ {
if (initial_hook) if (!g_hook_active)
{ {
if (g_config.hook == 4 && hook_got_ddraw_import(GetModuleHandleA(NULL), TRUE)) if (g_config.hook == 4 && hook_got_ddraw_import(GetModuleHandleA(NULL), TRUE))
{ {
@ -646,7 +646,7 @@ void hook_init(BOOL initial_hook)
if (!g_hook_active || g_config.hook == 3 || g_config.hook == 4) if (!g_hook_active || g_config.hook == 3 || g_config.hook == 4)
{ {
#if defined(_DEBUG) && defined(_MSC_VER) #if defined(_DEBUG) && defined(_MSC_VER)
if (initial_hook) if (!g_hook_active)
{ {
DetourTransactionBegin(); DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread()); DetourUpdateThread(GetCurrentThread());
@ -655,12 +655,12 @@ void hook_init(BOOL initial_hook)
} }
#endif #endif
if (initial_hook) if (!g_hook_active)
{ {
hook_patch_iat(GetModuleHandle("AcGenral"), FALSE, "user32.dll", "SetWindowsHookExA", (PROC)fake_SetWindowsHookExA); hook_patch_iat(GetModuleHandle("AcGenral"), FALSE, "user32.dll", "SetWindowsHookExA", (PROC)fake_SetWindowsHookExA);
} }
hook_create((HOOKLIST*)&g_hook_hooklist, initial_hook); hook_create((HOOKLIST*)&g_hook_hooklist, !g_hook_active);
g_hook_active = TRUE; g_hook_active = TRUE;
} }

View File

@ -1195,7 +1195,7 @@ HMODULE WINAPI fake_LoadLibraryA(LPCSTR lpLibFileName)
if (hmod && hmod != hmod_old) if (hmod && hmod != hmod_old)
{ {
hook_init(FALSE); hook_init();
} }
return hmod; return hmod;
@ -1223,7 +1223,7 @@ HMODULE WINAPI fake_LoadLibraryW(LPCWSTR lpLibFileName)
if (hmod && hmod != hmod_old) if (hmod && hmod != hmod_old)
{ {
hook_init(FALSE); hook_init();
} }
return hmod; return hmod;
@ -1251,7 +1251,7 @@ HMODULE WINAPI fake_LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwF
if (hmod && hmod != hmod_old) if (hmod && hmod != hmod_old)
{ {
hook_init(FALSE); hook_init();
} }
return hmod; return hmod;
@ -1279,7 +1279,7 @@ HMODULE WINAPI fake_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dw
if (hmod && hmod != hmod_old) if (hmod && hmod != hmod_old)
{ {
hook_init(FALSE); hook_init();
} }
return hmod; return hmod;
@ -1650,7 +1650,7 @@ HRESULT WINAPI fake_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD
if ((!quartz_dll && GetModuleHandleA("quartz")) || if ((!quartz_dll && GetModuleHandleA("quartz")) ||
(!msvfw32_dll && GetModuleHandleA("msvfw32"))) (!msvfw32_dll && GetModuleHandleA("msvfw32")))
{ {
hook_init(FALSE); hook_init();
} }
return result; return result;
@ -1667,7 +1667,7 @@ MCIERROR WINAPI fake_mciSendCommandA(MCIDEVICEID IDDevice, UINT uMsg, DWORD_PTR
if ((!quartz_dll && GetModuleHandleA("quartz")) || if ((!quartz_dll && GetModuleHandleA("quartz")) ||
(!msvfw32_dll && GetModuleHandleA("msvfw32"))) (!msvfw32_dll && GetModuleHandleA("msvfw32")))
{ {
hook_init(FALSE); hook_init();
} }
return result; return result;