PDA

View Full Version : حرفه ای: مشکل با dllimport



r00tkit
پنج شنبه 13 اسفند 1388, 16:34 عصر
سلام به همه ی خفن ها اقا من به یه دلیل می خوام از از توابع Api ویندوز 98 استفاده کنم

dll من kernel32.dll هستش ولی اجازه نمی ده من استفاده کنم پیغام :



Unable to load DLL 'kernel.dll': Attempt to access invalid address. (Exception from HRESULT: 0x800701E7)


فایل رو تو مسیر برنامم قرار دارم و اسمشم هم به kernel.dll تغییر دادم واینم کدم



class Program
{
[DllImport("kernel.dll")]
extern static void Beep(int x,int y);
static void Main(string[] args)
{
Beep(100, 100);
}
}


علت حدس زده شده: ویندوز 9x کرنلش با NT فرق داره توی NT اجازه ی دست رسی مستقیم به سخت افرار نیست و توی NT توابع َAPI از توابع Expose شده ی ntoskrnl.exe در ntdll.dll استفاده می کنه انم از HAL.DLL همه ی این توابع داخل (NTDLL.DLL,NTOSKRNL.DLL,HAL.DLL) توابع سطح کرنل هستن

حالا به من بگین چرا نمی شه ؟ وچی جوری می تونم این کار رو انجام بدم

CYCLOPS
پنج شنبه 13 اسفند 1388, 19:33 عصر
سلام دوست عزیز
امکان استفاده از توابع API ویندوز 98 تو XP وجود نداره فقط بحث DLL نیست که کپی کنید و مشکل حل بشه . . .
شما بگید برای چه کاربردی به توابع API احتیاج دارید تا معادل XP اون رو براتون پیدا کنیم :متفکر:

r00tkit
جمعه 14 اسفند 1388, 20:37 عصر
سلام خودم به این نتیجه رسیده بودم ولی...
این تابع رو اگه تونستی پیدا کن RegisterServiceProcess (معادلش رو) با همین argumant ها

http://objectmix.com/basic-visual/28032-how-do-registerserviceprocess-win-nt.html