Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/minhook.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZLOFENIX <admin@zlofenix.org>2015-05-19 23:14:17 +0300
committerZLOFENIX <admin@zlofenix.org>2015-05-19 23:14:17 +0300
commit20922427295daf22b0ce798dcd891738c6e319cc (patch)
tree04222f2db1162e1c8a2ab30110efcb51bca948b1
parented8b581694c10cf3243a5d1160da4728511a11e3 (diff)
Auto load module for MH_CreateHookApi
-rw-r--r--include/MinHook.h3
-rw-r--r--src/hook.c10
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:
diff --git a/src/hook.c b/src/hook.c
index a7fd374..4ee7c3a 100644
--- a/src/hook.c
+++ b/src/hook.c
@@ -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);