Question

What is a good resource to get started with Windows file system driver development for a newbie?

Was it helpful?

Solution

Windows NT File System Internals by Rajeev Nagar.

OSR Online's File System Resource page (and OSR Online in general):

The NTFSD mailing list/forum (also hosted by OSR):

And starting with Vista, the Windows Driver Kit (WDK), which used to be called the DDK, now includes the Installable File Systems (IFS) Kit:

Just a heads up - Windows file system development is extremely complex because the file system is tightly integrated with the Windows memory manager. It's the kind of thing that people dedicate careers to. Just so you have an idea what you may be getting into.

OTHER TIPS

You might try Windows Hardware Developer Central, which has links to blogs, newsgroups, books, and other useful resources for driver authors.

I also recommend downloading and installing the Windows DDK and exploring some of the included samples. There should be various skeleton drivers that can be used as starting points for your custom work.

For Windows drivers also see this blog: http://blogs.msdn.com/doronh/

For Linux based development, two good books come to mind: Linux Device Drivers and Linux Kernel Development. The Linux Device Drivers book can be a bit daunting so a good introduction to the Kernel is a useful starting point.

The source code of Windows implementation of ext2 file system might be useful.
But as Mike B correctly mention this is extremely complex area to enter, I would strongly suggest to learn some basic driver development concepts and write few not file system drivers before you start file system driver development.
If you do this for commercial use and not for learning purposes i would suggest outsourcing this work.This will be most cost effective way to go.

This book: http://www.amazon.com/Windows-2000-Device-Driver-Book/dp/0130204315/ref=sr_1_1?ie=UTF8&s=books&qid=1246856381&sr=8-1

or any newer book you can find by an Art Baker. I read his NT Device Driver book about 10 years ago, and it finally made everything clear.

BTW, the books from 10 years ago or more/less still valid. You can't use the examples, but the model has basically not changed - just gotten more complex in typical M$ fashion. The IRP stuff is all still valid.

The OSR stuff is good - but expensive... I think for a full understanding of the whole design Baker can't be beat. Also, anyone reading this just trying to learn Windows drivers - I would avoid the NTFS stuff... its super complicated, and has nothing to do with what you need to accomplish a simple USB driver, or even a DMA device.

To add some user-mode filesystem driver development options:

  • Dokan – open-source, with interfaces for C, .NET, Java, Ruby, FUSE.
  • CBFS (Callback File System) – commercial, with good documentation.

These solutions work like FUSE (File System in User Mode software for Linux). They do all the complex work in kernel and pass adapted requests to you user-mode app.

Dokan lacks some features as for current version, but I think it's easier to contribute to it and add the features you need than to make filesystem driver from scratch.

Dokan is a good example of kernel-mode driver code, too.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top