mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
tweak hook function
This commit is contained in:
parent
38d442545d
commit
648fe238ca
@ -125,7 +125,7 @@ extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
|
||||
extern BOOL g_hook_active;
|
||||
extern HOOKLIST g_hook_hooklist[];
|
||||
|
||||
void hook_init(BOOL initial_hook);
|
||||
void hook_init();
|
||||
void hook_exit();
|
||||
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);
|
||||
|
2
src/dd.c
2
src/dd.c
@ -1202,7 +1202,7 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
||||
|
||||
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.gui_thread_id = GetWindowThreadProcessId(g_ddraw.hwnd, NULL);
|
||||
|
@ -121,7 +121,7 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
|
||||
}
|
||||
|
||||
timeBeginPeriod(1);
|
||||
hook_init(TRUE);
|
||||
hook_init();
|
||||
break;
|
||||
}
|
||||
case DLL_PROCESS_DETACH:
|
||||
|
10
src/hook.c
10
src/hook.c
@ -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))
|
||||
{
|
||||
@ -646,7 +646,7 @@ void hook_init(BOOL initial_hook)
|
||||
if (!g_hook_active || g_config.hook == 3 || g_config.hook == 4)
|
||||
{
|
||||
#if defined(_DEBUG) && defined(_MSC_VER)
|
||||
if (initial_hook)
|
||||
if (!g_hook_active)
|
||||
{
|
||||
DetourTransactionBegin();
|
||||
DetourUpdateThread(GetCurrentThread());
|
||||
@ -655,12 +655,12 @@ void hook_init(BOOL initial_hook)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (initial_hook)
|
||||
if (!g_hook_active)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@ -1195,7 +1195,7 @@ HMODULE WINAPI fake_LoadLibraryA(LPCSTR lpLibFileName)
|
||||
|
||||
if (hmod && hmod != hmod_old)
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return hmod;
|
||||
@ -1223,7 +1223,7 @@ HMODULE WINAPI fake_LoadLibraryW(LPCWSTR lpLibFileName)
|
||||
|
||||
if (hmod && hmod != hmod_old)
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return hmod;
|
||||
@ -1251,7 +1251,7 @@ HMODULE WINAPI fake_LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwF
|
||||
|
||||
if (hmod && hmod != hmod_old)
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return hmod;
|
||||
@ -1279,7 +1279,7 @@ HMODULE WINAPI fake_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dw
|
||||
|
||||
if (hmod && hmod != hmod_old)
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return hmod;
|
||||
@ -1650,7 +1650,7 @@ HRESULT WINAPI fake_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD
|
||||
if ((!quartz_dll && GetModuleHandleA("quartz")) ||
|
||||
(!msvfw32_dll && GetModuleHandleA("msvfw32")))
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -1667,7 +1667,7 @@ MCIERROR WINAPI fake_mciSendCommandA(MCIDEVICEID IDDevice, UINT uMsg, DWORD_PTR
|
||||
if ((!quartz_dll && GetModuleHandleA("quartz")) ||
|
||||
(!msvfw32_dll && GetModuleHandleA("msvfw32")))
|
||||
{
|
||||
hook_init(FALSE);
|
||||
hook_init();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user