zoncpp
یک شنبه 26 فروردین 1386, 15:15 عصر
سلام،
من برنامه ای تحت ویژوال سی نوشته ام که این برنامه تکه کدی را به فایل exe ی دیگر اضافه می کند. لازم به ذکر است که این تکه کد باید به زبان اسمبلی نوشته شود تا در هنگام اجرای exe این کد نیز بدون مشکل اجرا گردد . این کار به درستی انجام می شود و exe من به همراه آن تکه کد اضافه شده بدون مشکل اجرا می شود.
اما لازم است که در کد من تابعی فراخوانی شود که یکی از پارامترهای این تابع آدرس تابع callback می باشد. من تابع callback را نیز به زبان اسمبلی در انتهای کد اصلی نوشته ام و در کد اصلی آدرس این تابع را به درستی محاسبه می کنم و به عنوان پارامتر ارسال می کنم.
همه چیز درست است کد داخل تابع callback نیز بدون مشکل اجرا می شود، اما هنگام بازگشت از تابع callback به کد اصلی برنامه، exe خطای don't send می دهد. در انتهای تابع callback چه کدی باید بنویسم که این مشکل پیش نیاید؟
مثلا برای ایجاد thread هم نیاز به آدرس یک تابع دیگر می باشد (مانند تابع Callback) که در انتهای این تابع با فراخوانی تابع ExitThread که یک تابع API است به کد اصلی بر می گردیم ولی در مورد تابع Callback نمی دانم چه کنم ؟؟؟؟؟؟؟؟؟؟
_asm
{
....
// push other parameters
push addressOfCallbackFunc
call myFunc
....
jmp End
CallbackFunc:
....
ret // ?????
End:
}
من برنامه ای تحت ویژوال سی نوشته ام که این برنامه تکه کدی را به فایل exe ی دیگر اضافه می کند. لازم به ذکر است که این تکه کد باید به زبان اسمبلی نوشته شود تا در هنگام اجرای exe این کد نیز بدون مشکل اجرا گردد . این کار به درستی انجام می شود و exe من به همراه آن تکه کد اضافه شده بدون مشکل اجرا می شود.
اما لازم است که در کد من تابعی فراخوانی شود که یکی از پارامترهای این تابع آدرس تابع callback می باشد. من تابع callback را نیز به زبان اسمبلی در انتهای کد اصلی نوشته ام و در کد اصلی آدرس این تابع را به درستی محاسبه می کنم و به عنوان پارامتر ارسال می کنم.
همه چیز درست است کد داخل تابع callback نیز بدون مشکل اجرا می شود، اما هنگام بازگشت از تابع callback به کد اصلی برنامه، exe خطای don't send می دهد. در انتهای تابع callback چه کدی باید بنویسم که این مشکل پیش نیاید؟
مثلا برای ایجاد thread هم نیاز به آدرس یک تابع دیگر می باشد (مانند تابع Callback) که در انتهای این تابع با فراخوانی تابع ExitThread که یک تابع API است به کد اصلی بر می گردیم ولی در مورد تابع Callback نمی دانم چه کنم ؟؟؟؟؟؟؟؟؟؟
_asm
{
....
// push other parameters
push addressOfCallbackFunc
call myFunc
....
jmp End
CallbackFunc:
....
ret // ?????
End:
}