A study guide for KMDF, UMDF, and Windows device driver concepts

One of the most common question that beginner driver developers ask is how they can start learning about driver development. Today, Eliyas, my manager, pointed out that we have already created a study guide that covers WDF and general Windows device driver concepts. It can be found here. I think that this self-study guide is…


Driver Developer Conference – DDC 2008

Next week (9/29 – 10/1) we’ll have the Microsoft Windows Driver Developer Conference (DDC) in Redmond. We’re expecting several driver developers. I’m excited about this, not only because it’s the first time that I’ll be participating in a Microsoft conference, but also because I’ll be giving a talk! Indeed, Bob Kjelgaard and I are giving…


Channel9 Video on Debugging BSODs

I found a very interesting channel9 video on how to debug BSODs (Blue Screens of Death): https://channel9.msdn.com/posts/Dan/Daniel-Pearson-Debugging-a-Windows-Blue-Screen-of-Death/ Daniel Pearson explains why blue screens happen in Windows, how a user can find the cause and how Driver Verifier works. Also, in the end he talks a little bit about how to debug applications and he shows…


Developing Windows Drivers With Visual Studio

Today morning I received an email from Patrick with a picture of Visual Studio with Intellisense on a WDF driver. Ok, I have to admit that in the beginning I thought that Patrick was using Photoshop! He’s a guy, who just doesn’t like GUIs in the first place! He can just go on and on…


How Driver Installation Works

The last few months I’ve been working on the WDF 1.7 (UMDF+KMDF) coinstallers (that’s one of the reasons that I’ve been silent for quite some time). Through this process I managed to learn a lot of things about how driver installation works and what is required by the driver developer. Unfortunately, this area is often…


Driver-Driver and Driver-Application Communication

Everybody knows how an application communicates with a driver: call CreateFile to open a handle to the PDO, and use ReadFile(Ex), WriteFile(Ex) and DeviceIoControl to read data, write data or send a control code. However, what about the opposite? How does a driver send data to an application (whenever it wants)? And how do drivers…


Windows Device Drivers Book Reviews

A quick search in the web reveals that the number of the books that are related to windows device drivers can be counted with the fingers of one hand. Even worse, most of the books are either too old (published before or around windows 2000) and/or not easily readable. Another problem is that the Windows…


Hardware and Driver Developer Blogs + Driver tips

Thanks, to craigrow, I saw that Microsoft has created a list for hardware and driver developer blogs. I’m still not there yet, but I hope that this will change 🙂  Another interesting link are the driver tips, which include papers about driver synchronization, memory management, driver design, debugging, etc. 


A Comparison of the Linux and Windows Device Driver Architectures

While searching for something irrelevant, I found a very interesting paper, called “A Comparison of the Linux and Windows Device Driver Architectures” by Melekam Tsegaye and Richard Foss. It was published at the ACM Operating Systems Review, Volume 38, Number 2, 2004. You can find a link to the paper here. The paper compares the…


Key Driver Concepts and Driver Development books

While looking at the traffic at the OSR ndev mailing list I saw that some introductory questions are answered in Microsoft’s Key Driver Concepts page. The links in this page include (but are not limited to) information about: Synchronization primitives (mutexes, fast mutexes, semaphores, spinlocks, etc) Memory management Windows scheduling C vs C++ as a language for driver development…