نوشته شده توسط
Inprise
باید با معماری کرنل ویندوز و توسعه برای کرنل آشنا باشی . باید با برنامه نویسی برای کرنل و محیط DDK آشنا باشی . برای هر دوی این موارد مستندات خوبی وجود داره . برای نوشتن هر چیزی که مرتبط با شبکه هست با NDIS سر و کار داری که معماری پیچیده ای داره . برای نوشتن یک درایور کارت شبکه در واقع باید یک NDIS Miniport Driver بنویسی . برای شروع ، کتاب Windows Internal کنار دستت باشه چون دائما باید بهش مراجعه کنی ، کتابی مثل Programming the Microsoft Windows Driver Model هم برای شروع برنامه نویسی برای کرنل مفید هست . بگذریم از اینکه WDM دیگه قدیمی به حساب میاد و اگر دنبال یک کار خیلی جدی هستی باید WDF رو یاد بگیری ، کتاب Developing Drivers With Windows Driver Foundation میتونه به درد بخوره ( البته من که دو سه سالی درگیر این ماجرا بودم کمی این کتاب رو ورق زدم ، سر درد گرفتم ، یا من سنم داره میره بالا یا دنیا خیلی تغییر کرده یا هر دو ! ) . برای محیط توسعه باید DDK و ترجیحا VC 8 رو داشته باشی . اولی مجانی هست و دومی هم یک نسخه مجانی داره که حتی همون هم کافیه . بد نیست که بگردی و Driver Studio ی مرحوم Numega رو پیدا کنی . یک Visual Softice و یک سری مستندات فوق العاده عالی داره که حتما به دردت میخوره . میتونی برای دیباگ از همین ، و یا Windbg استفاده کنی ، و البته یا باید یک کامپیوتر دیگه داشته باشی یا تست و دیباگ رو روی Virtual Machine انجام بدی . در مستندات و مثالهای DDK نحوهء تعامل با NDIS به اندازه کافی توضیح داده شده و مثال Miniport هم داره ( برای یک کارت شبکه با اتصال یو اس بی ) و در بستهء Driver Studio هم کتابخانه ای بنام DriverNetworks هست که NDIS رو کپسوله میکنه و زمان زیادی صرفه جوئی میشه ( البته توسعه اش متوقف شده ! مراقب این مسئله باش ) . برای مدیریت وقفه ها ترجیحا از اسمبلی استفاده کن و نه C . امیدوارم با همین کلید واژه ها مسیر درست رو پیدا کنی