Solved

Newbie to writting device drivers

Posted on 2006-11-30
8
1,245 Views
Last Modified: 2011-10-03
Hi all,

I'm new to writting windows device drivers, could anyone provide me some good tutorials online to start learning. Thanks.

Regards,
Kelvin
0
Comment
Question by:Kelvin_King
  • 4
  • 4
8 Comments
 
LVL 48

Accepted Solution

by:
AlexFM earned 125 total points
Comment Utility
This is main site of Windows device drivers developers:
http://www.osronline.com/

The best book about device drivers, the only one which has really working source code:
http://www.microsoft.com/MSPress/books/6262.aspx

New Microsoft high-level (relatively) platform for writing kernel-mode device drivers (KMDF):
http://www.microsoft.com/whdc/driver/wdf/KMDF.mspx

Sample hardware devices which can be used for learning device driver development:
https://www.osronline.com/custom.cfm?name=index_fullframeset.cfm&pageURL=https://www.osronline.com/store/index.cfm

WDM driver for OSR USB FX2 Learning Kit (V2):
http://www.osronline.com/article.cfm?article=371

Microsoft KMDF contains new version of OSR USB FX2 Learning Kit driver written in KMDF.

I think the best way is: download and install KMDF, buy OSR USB FX2 Learning Kit and learn Microsoft KMDF sample driver for this Learning Kit.
Of course, buy Walter Oney's book - "must" for every driver developer.

About online tutorials - there are no tutorials which allow to really learn driver development. You need real hardware device and sample driver working with it, this requires to spend some money.
0
 
LVL 48

Expert Comment

by:AlexFM
Comment Utility
Addition:
In the page "Sample hardware devices which can be used for learning device driver development" click " Hardware for Learning" link.
 
0
 
LVL 13

Author Comment

by:Kelvin_King
Comment Utility
Thanks Alex,

I'll look at those resources u recommended. Get back to you soon.
0
 
LVL 13

Author Comment

by:Kelvin_King
Comment Utility
When you said I need real hardware, I'm a little confused. It's the computer already the hardware? eg. memory, harddrives etc. Can't I test on those?
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 48

Expert Comment

by:AlexFM
Comment Utility
The problem with "real hardware" is the following. Suppose you need to learn C++ programming in user mode. All you need is to install some C++ IDE like VC++, and to write a program. You can run this program, find a lot of working samples which can be executed, debugged, tested etc.
With device drivers it is much more complicated. Of course, computer IS hardware. For every device, there is working device driver. Microsoft DDK contains a lot of sample drivers. For example, keyboard driver. Try to read it - it is over complicated and absolutely unreadable for beginner. All standard device drivers on XP are protected. When you try to replace keyboard device driver with compiled Microsoft sample, XP kicks it off and restores original driver.
There are many driver books and tutorials which contain code fragments, but don't contain full working samples which can be installed and executed. Only Walter Oney's book contains really working sample code.

To learn driver development, we need real piece of hardware with known and relatively simple interface, and working driver sample, which can be installed, tested and debugged. Here comes osronline store whith driver learning kits. You can buy there simple device of some type, like USB device, PCI card, which comes with sample driver and source code. You can connect this device, install driver and see it working.

I have OSR USB FX2 Learning Kit. This is small card with number of swithces and LEDs, connected to USB computer port. There are two sample drivers for it - OSR WDM driver, and Microsoft KMDF driver. I used Microsoft KMDF driver.

Microsoft sample code contains driver and user-mode client application. Connect OSR USB FX2 device, install KMDF sample driver, run user-mode application and test driver functions. It is possible to turn on/off LEDs, read state of switches, read/write information in stream mode. See details in these articles:
http://www.codeproject.com/system/wdf_kmdf_basic.asp
http://www.codeproject.com/system/kmdf_osr_usb_fx2.asp

I think that this is the best learning kit.

Do you have some specific requirements? For example, if you need to write PCI card driver, you don't need to learn USB sample. There are lot of driver types, which are significantly different.
If you don't have any requirements and only want to start from any place, OSR USB FX2 is good one to start with.
0
 
LVL 13

Author Comment

by:Kelvin_King
Comment Utility
Thanks alot Alex.

Yeah I see what you mean now. I'll try and purchase Walter's book. But does Walter's book require me to buy some specific devices or does it work on general computer hardware.

Also, we are not using the Windows Driver Framework yet. I'm actually joining a project that is already in version 1, we are doing some major changes so I need to pick up kernel mode device drivers. Specifically File System device drivers as well as USB devices/ smart cards as it's related to file io/ encryption etc, i believe using the IFS Kit.  

Í'll give Walter's book a read first.. but I don't think I'll be able to get my hands on the hardware you mentioned that soon.
0
 
LVL 48

Expert Comment

by:AlexFM
Comment Utility
OK, if you have existing WDM drivers, this is better. Walter Oney's book is about WDM drivers.
If you want to learn WDM USB drivers, you can use OSR USB toolkit with OSR WDM (non-KMDF) driver. If you want to write completely new USB driver, consider using KMDF.
I don't know anything about file system drivers, you need to search for examples. However, learning file system drivers must be relatively easy - they can be executed on any computer, without special hardware.

In any case, reading the "Programming the Microsoft® Windows® Driver Model" is the first thing you should do.
0
 
LVL 13

Author Comment

by:Kelvin_King
Comment Utility
Yep. In fact, my supervisor just passed me Walter's book on Friday. I'm reading it now. Thanks for your help Alex.
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now