• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1358
  • Last Modified:

Newbie to writting device drivers

Hi all,

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

  • 4
  • 4
1 Solution
This is main site of Windows device drivers developers:

The best book about device drivers, the only one which has really working source code:

New Microsoft high-level (relatively) platform for writing kernel-mode device drivers (KMDF):

Sample hardware devices which can be used for learning device driver development:

WDM driver for OSR USB FX2 Learning Kit (V2):

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.
In the page "Sample hardware devices which can be used for learning device driver development" click " Hardware for Learning" link.
Kelvin_KingAuthor Commented:
Thanks Alex,

I'll look at those resources u recommended. Get back to you soon.
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Kelvin_KingAuthor Commented:
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?
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:

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.
Kelvin_KingAuthor Commented:
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.
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.
Kelvin_KingAuthor Commented:
Yep. In fact, my supervisor just passed me Walter's book on Friday. I'm reading it now. Thanks for your help Alex.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now