مشاهده نسخه کامل
: فایل های sys , dll
M.Hashemi
26-06-2011, 21:45
با سلام
3 سوال دارم :
1- تفاوت فایل های dll با sys چیست؟
2- چگونه می توان در C# فایل sys را ساخت و از ان استفاده کرد؟
3- چگونه می توان فایل های dll که در C# تولید شده اند register کرد نیازی به حفظ ادرس ان نباشد؟یعنی اگر dll را کنار فایل exe کپی نکردیم باز هم load شود و نیازی نباشد که فایل dll را جای خاصی کپی کنیم؟
با تشکر
سلام
1)
فایلهای dll انواع مختلفی دارند که میتوانند توابع و یا کلاسهایی را (تحت COM) صادر کنند همچین dll های CLR تحت دات نت هم مدتها است توسعه یافته اند.
فایلهای sys بعضاً فایلهای text متنی هستند یا بهتر بگویم بودند!
در حال حاضر sys های ویدوز فایهای اجرایی همانند dll ولی با یک نقطه ورودی همانند exe ها هستند.
این فایها در مراحل اولیه بارگذاری سیستم عامل در حافظه بارگذاری شده و میمانند.
2)
در VB.Net یا #C فقط میتوان dll های CLR و در صورت ضرورت COM را تولید کرد.
3)
- فایلهای dll که حاوی توابع پایه هستند را میتوانید در شاخه System32 کپی کنید تا نیازی به کنار exe بودن نداشته باشند.
- فایلهای dll که نوع COM باشند را باید توسط regsvr32.exe رجیستر کرد تا آماده کار شود و دیگر نیازی به وجود ان کنار exe اصلی نباشد.
در این مورد شما باید فایل را در یک مکان ثابت که تغییرش ندهید کپی کنید و سپس عمل رجیستر را انجام دهید.
اطلاعات بیشتر:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
- فایلهای dll که نوع CLR (دات نتی) باشند را میتوان در GAC و به کمک gacutil.exe ثبت کرد تا دیگر نیازی به وجود فایل در کنار exe نباشد.
اطلاعات بیشتر:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
هر سه عمل فوق میتواند یکبار و در زمان نصب برنامه انجام شود.
M.Hashemi
30-06-2011, 18:20
سلام
اقا مرسی
خیلی جواب کامل و جامعی بود.
خیلی وقت بود دنبال چنین چیزی می گشتم.
بازم ممنون.
فقط 2 سوال دیگر برام پیش امد :
1- در زمانی که VS روی سیستم خودم نصب است با رفتن به command prompt مربوط به VS و نوشتن gacutil.exe به همراه پارامتر ها مربوطه می توان dll از نوع clr را رجیستر کرد.
اما اگر بخواهم در سیستم کاربر در هنگام نصب یا اجرای اولین بار نرم افزار این کار را انجام دهم باید چکار کنم؟
چون دیگر vs نیست که dll را با command prompt ان رجیستر کنم؟
2- اگر ممکنه یک توضیح در مورد ساخت dll های com و طریقه استفاده از ان ها را بگید؟
* خیلی موضوع جالبیه چون من فکر می کردم که dll های win32 فقط زبان های مثل delphi و ... (یعنی زبان های native) می توانند بسازند و فکر نمی کردم که c# که تحت .net است بتواند dll های com را بسازد و از ان ها استفاده کند.
بازم ممنون
با تشکر
سلام
1)
مایکروسافت پیشنهاد میکند که برنامه ها در زمان نصب چیزی در GAC نصب نکنند!
به همین دلیل این فایل در مجموعه SDK وجود دارد ولی با نصب Framework کپی و نصب نمیشود.
ولی اگر شما اصرار دارید که dll تان در GAC نصب شود میتوانید فایل gacutil را از شاخه زیر کپی کرده و در بسته Setup خود قرار دهید.
ROOT:\Program Files\Microsoft SDKs\Windows\VERSION\bin
یعنی خودتان فایل را همراه فایلهای دیگر Setup قرار دهید و داشته باشید و بعد هم درون Setup آن را اجرا کنید و...
(
لازم به ذکر است که معمولاً برنامه های Setup ساز گزینه ای برای رجیستر کردن خودکار dll های COM دارند.
مانند گزینه Register=vsdraCOM در MSI
دلیل هم ان است که اشیای COM برای کار کردن باید رجیستر شوند که از نقاط ضعف تکنولوژی COM مایکروسافت محسوب میشده (که مایکروسافت بعدهاً در نسخه بالاتر راه کارهایی ارائه کرد) ولی dll های CLR همچین مشکلی ندارند و اجباری برای وجود انها در GAC وجود ندارد
)
2)
چگونگی تولید اشیای COM در پست زیر بیان شده است. (مربوط به بیش از چهارسال قبل!)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ضمناً بیشتر dll های بنیادین ویندوز از نوعی هستند که فقط شامل توابع هستند که معروف به Windows API هستند.
این نوع dll ها به معنی واقعی کلمه Dynamic Link Library هستند و در ویندوز اغلب با ++VC نوشته شده اند که امکان تولید dll های مشابه (فقط شامل توابع صادر شده) در Delphi هم وجود دارد ولی اصولاً کتابخانه های COM به علت صدور Class و کتابخانه CLR به علت صدور هر چیزی انعطاف پذیری بیشتری دارند و برای کارهای پیچیده راحت تر قابل استفاده هستند.
تاپیک های دیگر در ارتباط با dll ها جهت پیوستگی بیشتر مطالب:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.
M.Hashemi
01-07-2011, 19:36
با سلام
اقا باز هم مثل همیشه خیلی expert و کامل و جامع جواب دادید.
دیگه هیچ سوالی در این مورد ندارم و به تمام سوالاتم جواب داده شد.
خیلی ممنون و دست شما مرسی :31:
با درکی که از صحبت های شما پیدا کردم از همان dll های clr و بدون وارد کردن ان ها در gac ازشون استفاده می کنم.
به نظرم این طور خیلی بهتر و استاندارد تر است.
باز هم از کمکتون متشکرم.
پیروز باشید:40::11::10::8:
سلام
چطور میشه فایل sys که درحال اجرا هست رو متوفق کرد؟ این فایلها چطور بارگزاری میشن و کار دقیقشون چی هست؟
مسیر قرار گیریشون در آدرس زیر هست
windows drive \Windows\System32\drivers
میشه توضیح دقیق بدید؟
ممنون
:11:
سلام
چطور میشه فایل sys که درحال اجرا هست رو متوفق کرد؟ این فایلها چطور بارگزاری میشن و کار دقیقشون چی هست؟
مسیر قرار گیریشون در آدرس زیر هست
windows drive \Windows\System32\drivers
میشه توضیح دقیق بدید؟
اینها فایلهای راه انداز (واسط ارتباط، قطعه کدی که چگونکی برقراری ارتباط و ترجمه داده های باینری را با device خاصی میداند) سخت افزار و پروتکل های پایه سیستم هستند.
و راه مشخصی برای متوقف کردن آنها (بجز حذفشان که خودش راه خاصی دارد) من نمیدانم...
مثلاً ...
cdrom.sys راه انداز درایو CD
kbdclass.sys, kbdhid.sys راه انداز کیبور
mouclass.sys, mouhid.sys راه انداز ماوس
ntfs.sys پروتکل NTFS
و...
و...
معمولاً شرکت های سخت افزاری نیاز به طراحی این قبیل فایلها دارند.
اگر واقعاً قصد طراحی وسیله ای سخت افزاری و اتصال ان را به رایانه را دارید میتوانید اطلاعات تکمیلی و جامعی نمونه کدها و... را در مسیر زیر پیدا کنید.
اگر بسته فایل مربوطه را دانلود کنید میتوانید نمونه سورس های متنوعی برای راه اندازی انواع وسیله ها پیدا کنید.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یا به عنوان نمونه دیگر میتوان به نمونه سورس fastfat.sys و cdfs.sys (دو پروتکل سیستم فایل) اشاره کرد که از زیر قابل دانلود است:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که برای شروع واقعاً نمونه خیلی خوب و بسیار مفیدی میتواند باشد.
شب خوش.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.