WIN64: "Магический" вызов функции
От: kankan Украина  
Дата: 21.05.09 09:06
Оценка:
Всем привет!

Портирую старый проект из 6-й студии в 2005(x64).
Проблема такая: есть указатель на ф-цию и буффер, который содержит упакованные параметры этой ф-ции.
Надо ее как-то вызвать в x64.

В шестерке юзается следующий код:
    int* pArgsBegin = ...;
    int* pArgsEnd = ...;

    int* pArg = pArgsEnd; // use __stdcall
    while (pArg > pArgsBegin )
    {
        int val = *(--pArg );
        __asm push val
    }

    void* functionAddress = ...;

    __asm
    {
        call functionAddress
    }


Вот такой хак. Работает на ура.
В 2005-й студии компилится для x86, но не проверял работает ли.
Под x64 не компилится — говорит, что асмовские вставки не супортятся.

Есть ли какой-то другой способ вызвать ф-цию по указателю и запихнуть туда параметры?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.