No more casting to void* or void** every line. That's all done inside of wrappers.
MH::CreateHook(some_target, some_detour, &some_original);
Merge MH_CreateHook
/ MH_CreateHookApi
and MH_EnableHook
into one.
MH::InstantHook(some_target, some_detour, &some_original);
MH::InstantHook(some_target, some_detour);
MH::InstantHookApi("some_lib.dll", "some_export", some_detour, &some_original);
MH::InstantHookApi(L"some_lib.dll", "some_export", some_detour);
You now get access to functions like MH_EnableHookApi
(which normally isn't a thing).
MH::EnableHookApi(L"some_lib.dll", "some_export");
MH::DisableHookApi("some_lib.dll", "some_export");
// ...