Add thread safety to return value

This commit is contained in:
Kenzzer 2025-08-27 21:35:51 +00:00
parent b802856e84
commit b460ed895f
No known key found for this signature in database
GPG Key ID: 64C3FD4332686DC1
2 changed files with 21 additions and 9 deletions

View File

@ -99,8 +99,8 @@ static_assert(false, "KHOOK_STANDALONE wasn't defined!");
#endif
class KHookImpl : public KHook::IKHook {
public:
virtual KHook::HookID_t SetupHook(void* function, void* hookPtr, void* removedFunctionMFP, KHook::Action* hookAction, void* overrideReturnPtr, void* originalReturnPtr, void* preMFP, void* postMFP, void* returnOverrideMFP, void* returnOriginalMFP, void* callOriginalMFP, bool async = false) override {
return KHook::SetupHook(function, hookPtr, removedFunctionMFP, hookAction, overrideReturnPtr, originalReturnPtr, preMFP, postMFP, returnOverrideMFP, returnOriginalMFP, callOriginalMFP, async);
virtual KHook::HookID_t SetupHook(void* function, void* hookPtr, void* removedFunctionMFP, void* preMFP, void* postMFP, void* returnMFP, void* callOriginalMFP, bool async = false) override {
return KHook::SetupHook(function, hookPtr, removedFunctionMFP, preMFP, postMFP, returnMFP, callOriginalMFP, async);
}
virtual void RemoveHook(KHook::HookID_t id, bool async = false) override {
return KHook::RemoveHook(id, async);
@ -111,17 +111,29 @@ public:
virtual void* GetOriginalFunction() override {
return KHook::GetOriginalFunction();
}
virtual void* GetOriginalValuePtr(bool pop = false) override {
return KHook::GetOriginalValuePtr(pop);
virtual void* GetOriginalValuePtr() override {
return KHook::GetOriginalValuePtr();
}
virtual void* GetOverrideValuePtr(bool pop = false) override {
return KHook::GetOverrideValuePtr(pop);
virtual void* GetOverrideValuePtr() override {
return KHook::GetOverrideValuePtr();
}
virtual void* GetCurrentValuePtr(bool pop = false) override {
return KHook::GetCurrentValuePtr(pop);
}
virtual void DestroyReturnValue() override {
return KHook::DestroyReturnValue();
}
virtual void* GetOriginal(void* function) override {
return KHook::GetOriginal(function);
}
virtual void* DoRecall(KHook::Action action, void** pointerToReturnValue) override {
return KHook::DoRecall(action, pointerToReturnValue);
virtual void* DoRecall(KHook::Action action, void* ptr_to_return, std::size_t return_size, void* init_op, void* delete_op) override {
return KHook::DoRecall(action, ptr_to_return, return_size, init_op, delete_op);
}
virtual void SaveReturnValue(KHook::Action action, void* ptr_to_return, std::size_t return_size, void* init_op, void* delete_op, bool original) {
return KHook::SaveReturnValue(action, ptr_to_return, return_size, init_op, delete_op, original);
}
virtual KHook::Action GetHookAction() {
return KHook::GetHookAction();
}
} g_KHook;

2
third_party/khook vendored

@ -1 +1 @@
Subproject commit 9cf0058b12b0bf2a80c20aa5eba1205172042120
Subproject commit 36bd1c7a6638f5254c0c6253fa209403575822f1