22 #include "../config.h"
24 #include <type_traits>
25 #include <BlackBone/Process/Process.h>
26 #include <BlackBone/Process/RPC/RemoteFunction.hpp>
27 #include "RMonoAPIFunctionTypeAdapters.h"
28 #include "RMonoAPIFunctionSimple_Def.h"
29 #include "RMonoAPIFunctionCommon_Def.h"
48 template <
class CommonT,
typename ABI,
typename RetT,
typename... ArgsT>
52 typedef RetT RawRetType;
53 typedef std::tuple<ArgsT...> RawArgsTuple;
61 void initRaw(blackbone::ptr_t rawFuncAddr)
63 this->rawFunc.rebuild(getRemoteMonoAPI()->getProcess(), rawFuncAddr, getRemoteMonoAPI()->getWorkerThread());
66 RetT invokeRaw(ArgsT... args) {
return rawFunc(args...); }
68 blackbone::ptr_t getRawFuncAddress()
const {
return rawFunc.getAddress(); }
71 RMonoAPIBase* getRemoteMonoAPI() {
return static_cast<CommonT*
>(
this)->getRemoteMonoAPI(); }
93 template <
typename CommonT,
typename ABI,
typename RetT,
typename... ArgsT>
97 typename RMonoAPIReturnTypeAdapter<ABI, RetT>::RawType,
98 typename RMonoAPIParamTypeAdapter<ABI, ArgsT>::RawType...
102 template <
typename Enable,
typename CommonT,
typename ABI,
typename RetT,
typename... ArgsT>
122 template <
typename CommonT,
typename ABI,
typename RetT,
typename... ArgsT>