Попытка сделать DetourAttach, но не могу преобразовать тип данных моей функции lua в LPVOID
Так вот как выглядит моя функция
DetourAttach(&(LPVOID&)lua_tolstring, (PBYTE)tostring);
lua_tolstring
является const char*
а также LPVOID
дает мне эту ошибку.
typedef void* LPVOID
invalid type conversion
Как я могу сделать эту работу?
1 ответ
Решение
У вас нет правильной семантики для DetourAttach. Первый аргумент - это указатель на указатель на функцию, который должен быть инициализирован для перехвата исходной функции. Второй аргумент - это указатель на функцию, содержащий вашу функцию-ловушку.
Смотрите этот блог для примеров.
Таким образом, вы не можете просто передать функцию. Вы должны инициализировать переменную, например:
// Declaration of LUA API function in header
const char*lua_tostring (lua_State *L, int index);
// Your hook function must have this signature to match
const char*my_tostring (lua_State *L, int index);
// Your variable
const char* (*Real_lua_tostring)(lua_State *L, int index) = lua_tostring;
// Make the call
DetourAttach(&(LPVOID&)Real_lua_tolstring, (PVOID)my_tostring);