ورود

View Full Version : virtual driver



benyamin_pc
دوشنبه 27 فروردین 1386, 13:30 عصر
برنامه ای مثل deamon رو چطوری میشه ساخت؟که یک فایل رو که به حالت image هست رو با یه درایو مجازی باز کرد؟
لطفا" کمک کنین

Best Programmer
یک شنبه 02 اردیبهشت 1386, 06:23 صبح
شما نیاز دارید که یک درایور مجازی طراحی بکنید. درایور نویسی کار نسبتا سختی هست(نه به لحاظ کدنویسی از لحاظ محدودیت های حافظه ، مدیریت حافظه که بیشتر موارد باید به صورت دستی صورت بگیرد، نوع سخت افزار (DMA, PIO) ، نحوه دسترسی به حافظه (BIO , DIO) ، طراحی IRP و خیلی چیزای دیگه که گفتنش در یک پست امکان پذیر نیست)
ولی اگر می خواهید وارد این عرصه بشوید چند کتاب بسیار خوب وجود دارد که معرفی می کنم:
Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000 (Pro-Developer) (http://www.amazon.com/s/002-0656298-1224851?ie=UTF8&keywords=Microsoft.Windows.Internals.Fourth.Editio n&tag=opera-20&index=blended&link%5Fcode=qs)
توضیح :‌ کتاب بسیار عالی می باشد ولی هیچ گاه به شما پیشنهاد نمی دهم اولین کتابتان باشد چرا که بیشتر کتابی تشریحی است و فقط به ذکر توضیحات می پردازد و برای کسی که اولین بار می خواهد وارد این عرصه بشود به زودی کسل کننده می شود.
The Windows 2000 Device Driver Book: A Guide for Programmers (2nd Edition) (http://www.amazon.com/Windows-2000-Device-Driver-Book/dp/0130204315/ref=pd_bbs_sr_1/002-0656298-1224851?ie=UTF8&s=books&qid=1177211475&sr=8-1)
توضیح : کتاب بسیار عالی هم برای تازه وارد ها هم برای کسانی که می خواهند بیشتر بدانند. به شما توصیه می کنم که از این کتاب شروع کنید.
Programming the Microsoft Windows Driver Model, Second Edition (http://www.amazon.com/Programming-Microsoft-Windows-Driver-Second/dp/0735618038/ref=sr_1_1/002-0656298-1224851?ie=UTF8&s=books&qid=1177211634&sr=8-1)
توضیح :‌این کتاب جزو کتاب های عالی این زمینه می باشد ولی به چند دلیل باز هم نمی تواند اولین کتاب برای آغاز باشد.

البته کتاب زیاد نیست تو این زمینه , ولی اگر علاقه دارید بیشتر وارد دنیای ویندوز بشوید چند کتاب هست که من فقط به ذکر نام آنها می پردازم:
Win32 Programming Secrets
Undocumented Windows 2000 Secrets
Windows NT File System Internals
Windows NT,2000 Native API Reference
Undocumented Functions for Microsoft Windows NT-2000
امیدوارم موفق باشی.

یک مورد که فراموش کردم بگویم ، ابزار هایی است که نیاز دارید:
Microsoft Windows Symbols
DDK
Windows Internals Softwares
Resource Kit
KrView
Windows Debugger

greenway
دوشنبه 03 اردیبهشت 1386, 19:28 عصر
صرفا یک کلمه کلیدی برای جستجو ( مخصوصا در دجانیوز ) به مطلب Best Programmer می خواستم اضافه کنم : Filtered File System یا FFS
البته از لحاظ ساختاری Daemon از نسخه 3.4x به بعد از FFS به Virtual SCSI Device تبدیل شده که این کار برای ساپورت بهتر از قفلهای سی دی انجام شده ، اما Nero Drive , Clone Drive و Virtual CD همه اشون یکجور FFS هستند.

Best Programmer
سه شنبه 04 اردیبهشت 1386, 11:00 صبح
خیلی ممنون میشوم اگر ممکن هست این بحث را کمی باز کنید . اگر می توانید مقاله ای کتابی هر چیزی در این مورد می شناسید معرفی کنید ممنون میشوم.

benyamin_pc
سه شنبه 04 اردیبهشت 1386, 12:46 عصر
از همگی ممنون اگه بازم اطلاعاتی دارید و می تونین راهنمایی یا کمکی بکنین ممنون می شم بگین

greenway
سه شنبه 04 اردیبهشت 1386, 18:44 عصر
خیلی ممنون میشوم اگر ممکن هست این بحث را کمی باز کنید . اگر می توانید مقاله ای کتابی هر چیزی در این مورد می شناسید معرفی کنید ممنون میشوم.

متاسفانه من اطلاعات کاملی در این مورد ندارم که به صورت کلاسه بندی شده بحث را باز کنم. اما خلاصه چیزی که من درک کردم این است که به طور کلی معماری ویندوز NT لایه بندی شده است. وقتی یک درخواست از Application Layer ارسال می شود ، این درخواست به بالاترین IO ارسال می شود و با توجه به Handle شدن یا نشدن درخواست ، اتفاقات دیگری می افتد. یعنی اگر بالاترین لایه درخواستی را به طور کامل انجام دهد ، نتیجه در همان لایه به لایه Application برگشت داده می شود. در صورت عدم پشتیبانی لایه بالایی از درخواست ، درخواست ها به لایه های پایین تر ارسال می شوند. در نهایت همه درخواستها توسط Hal.DLL و توابع READ/WRITE PORT به IO فیزیکی ارسال شده و جواب همانطور لایه به لایه به بالا برمیگردد. امکان افزودن لایه به لایه های سیستم عامل توسط درایورها وجود دارد و آخرین لایه همواره در بالاترین سطح قرار می گیرد. یعنی اگر شما یک فیلتر برای فایل سیستم بنویسید که اسم حسن را به یک فایل در سیستم ارجاع دهد و تمامی درخواستهای خواندن و نوشتن و بازکردن و بستن و ... را در آن هندل کنید ، و آنگاه این فیلتر را به لایه فایل سیستم بچسبانید ، اولین درایوری که درخواست را می بیند فیلتر شما خواهد بود که با استفاده از لایه های پایینی خود عملیات درخواست را به طریقی که برنامه نویسی کرده اید انجام داده و نتیجه را برمیگرداند. در صورتی که یک فیلتر دیگر بعد از فیلتر شما بیاید ، چون در فیلتر جدید چیزی بنام حسن پشتیبانی نشده ، آن فیلتر درخواست را به بعدی یعنی فیلتر شما ارجاع می دهد و الی آخر.
از این قابلیت برای افزودن سخت افزار جدید ، فایل سیستم جدید ، گرفتن اطلاعات ارسالی (مانند Packet Filtering برای دیواره آتش ) و یا حتی کاری که من انجام داده ام ( جلوگیری از ارسال دستورات IO از Application Layer به Kernel Driver در الکل و دیمون ) می توان استفاده کرد.
برنامه هایی که سی دی مجازی می سازند ، علاوه بر یکسری عملکردهای پیش فرض مانند ارسال درخواست های پشتیبانی نشده به لایه پایینی ، پاسخ به درخواستهای مورد نظر خودشان و Mount کردن نام مورد نظر خودشان ، قسمتی نیز برای پشتیبانی از Plug&Play را نیز دارند که باعث می شود با اجرای فیلتر ، سخت افزار شبیه سازی شده نیز به صورت P&P در سیستم Mount شود.

در مورد مرجع و کتاب ، شاید بیشترین چیزی که بتواند مورد استفاده قرار بگیرد ، MSDN و مثالهای DDK است . گروه های Kernel Programming لیست شده در DejaNews هم ندرتا" حاوی نکات کلیدی است. یک Source هم برای درایو مجازی برای NT وجود دارد که اگر پیدا نکردید ، یادآوری کنید که به دنبالش بگردم و اینجا پچسبانم.

انشاال.. که چیزی را اشتباه نگفته باشم که باعث گمراهی دوستان شود.

این پست به این موضوع مربوط است :‌ http://barnamenevis.org/forum/showpost.php?p=332887&postcount=9

Inprise
سه شنبه 04 اردیبهشت 1386, 19:07 عصر
برنامه ای مثل deamon رو چطوری میشه ساخت؟که یک فایل رو که به حالت image هست رو با یه درایو مجازی باز کرد؟
لطفا" کمک کنین

نرم افزاری که گفتی درایور دارد و برای شروع هم مثال Ram Diskی که همراه DDK وجود دارد مناسب است ، اما یک راه حل ساده تر این است که یک Shell Extension بنویسی . برای مطالعه در مورد هر دو روش هم طبیعتا باید از گوگل شروع کنی .

benyamin_pc
چهارشنبه 05 اردیبهشت 1386, 12:22 عصر
این ddk رو از کجا میشه dl کرد؟