Re[5]: WIN64: "Магический" вызов функции
От: DTB Россия  
Дата: 21.05.09 11:17
Оценка:
Здравствуйте, kankan, Вы писали:

K>Вы меня неправильно поняли.

K>Код, который я привел, работает с кучей функций, и мне не надо их знать — это типа "универсальный" враппер на ф-цию. С его помощью могут вызываются например ф-ции, загруженные GetProcAddress().
K>Что конкретно вызывает пользователь этого враппера — я хз, у меня есть только указатель на вызываемую ф-цию и ее параметры.
K>Проблема в том как вызвать эту функцию и передать ей все эти параметры в x64.

теперь понял, прошу прощения. тогда похоже только через хард кодинг, брать в руки ассемблер, разбираться как передаются параметры (это хорошо если они однотипные, если нет, то будет сложнее — целочисленные и числа с плавающей запятой передаются в разных регистрах). и ваять код, либо в асме, линковать obj, либо представлять в байткоде в С

еще можно сделать такой тупняк (если количество параметров не огромно):

void Fn1(int i, int i2)
{
    printf("i=%d,i2=%d\n", i, i2);
}
void Fn2(int i)
{
    printf("i=%d\n", i);
}

typedef void (*fn_myfunc_t)(...);

fn_myfunc_t fn = (fn_myfunc_t)&Fn1;
fn(123, 456);
fn_myfunc_t fn1 = (fn_myfunc_t)&Fn2;
fn(123);


то бишь для каждого конкретного кол-ва параметров делать соответствующий вызов (по крайней мере работает), хотя может как то и разом туда все передать, в массиве например, у меня не получилось
Have fun...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.