diff options
author | ZLOFENIX <admin@zlofenix.org> | 2015-05-19 23:14:17 +0300 |
---|---|---|
committer | ZLOFENIX <admin@zlofenix.org> | 2015-05-19 23:14:17 +0300 |
commit | 20922427295daf22b0ce798dcd891738c6e319cc (patch) | |
tree | 04222f2db1162e1c8a2ab30110efcb51bca948b1 | |
parent | ed8b581694c10cf3243a5d1160da4728511a11e3 (diff) |
Auto load module for MH_CreateHookApi
-rw-r--r-- | include/MinHook.h | 3 | ||||
-rw-r--r-- | src/hook.c | 10 |
2 files changed, 10 insertions, 3 deletions
diff --git a/include/MinHook.h b/include/MinHook.h index aa6763b..f389d0f 100644 --- a/include/MinHook.h +++ b/include/MinHook.h @@ -121,8 +121,9 @@ extern "C" { // ppOriginal [out] A pointer to the trampoline function, which will be // used to call the original target function. // This parameter can be NULL. + // autoLoad [in] Will load module if not loaded MH_STATUS WINAPI MH_CreateHookApi( - LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal); + LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal, bool autoLoad = false); // Removes an already created hook. // Parameters: @@ -852,13 +852,19 @@ MH_STATUS WINAPI MH_ApplyQueued(VOID) //------------------------------------------------------------------------- MH_STATUS WINAPI MH_CreateHookApi( - LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal) + LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal, bool autoLoad) { HMODULE hModule; LPVOID pTarget; hModule = GetModuleHandleW(pszModule); - if (hModule == NULL) + if (hModule == NULL && autoLoad) + { + hModule = LoadLibraryW(pszModule); + if (hModule == NULL) + return MH_ERROR_MODULE_NOT_FOUND; + } + else return MH_ERROR_MODULE_NOT_FOUND; pTarget = (LPVOID)GetProcAddress(hModule, pszProcName); |