Попытка сделать 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);
Другие вопросы по тегам