Come Here For The Fundamentals
Whether you're new to writing drivers on Windows, or you just want to bone-up on some core concepts, this is the section you'll want.
The Basics contains articles on fundamental concepts of Windows driver writing and systems internals. From articles on basic techniques to answers to your frequently asked questions, you'll find it here.
Getting Started Writing Windows Drivers
OSR Staff (Read 324877 times)
Would you believe this is among the most frequently read articles on OSR Online? It is, with over?thirty thousand people having read it so far.
So, you want to learn how to write Windows device drivers but you're not sure where to start? Having assisted thousands of developers get up to speed on writing drivers, we figured it was about time that we offered some "getting started" resources to newbie driver writers. While not intended to be an exhaustive driver writer FAQ, the list below is a compilation of common questions (and answers, of course!) we hear from those new to the driver space.
Last Updated:21 February 2014
Getting DbgPrint Output To Appear In Vista and Later
OSR Staff (Read 97144 times)
You build the checked version of your driver and run it on any OS since Vista for the first time. And, what happens? You don't see any of your driver's DbgPrint messages displayed in WinDbg! What happened? Let me tell you (updated for Win7 and Win8)...
WDK Preview: Installation Through Debugging
The NT Insider, Vol 18, Issue 3, Sept-Oct 2011 (Read 7980 times)
The Basics About WDF Queues
The NT Insider, Vol 18, Issue 2, May-June 2011 (Read 10429 times)
Years ago we spent time on the topic of WDF queues, and over time, we've found them to be one of the most powerful objects of a WDF driver. As such, we thought the topic was worthy of more material. Read on to ensure you are aware of features of these objects, and their use for your next WDF driver.
A Common Topic Explained - Sharing Memory Between Drivers and Applications
The NT Insider, Vol 14, Issue 4, November - December 2007 (Read 49046 times)
At one time or another, most driver writers will have the need to share memory between a driver and a user-mode program...
Instant Online Crash Dump Analyzer
OSR Staff (Read 40898 times)
Got a crash dump? Analyze it instantly online (and for free) using OSR's Instant Online Crash Dump Analyzer. Accepts mini-dumps and kernel summary dumps... you can even zip and upload PDBs. Check it out!
It's All About The Basics
OSR Staff (Read 22282 times)
Check this section for information that's fundamental to driver development on Windows.
Where's The Checked Build?
Hector J. Rodriguez (Read 91806 times)
Lookin' to download Checked Builds for Windows 2000, Windows XP, or Windows Server 2003, or any of their service packs? Here are the pointers you need.
Getting Crash Dumps to Appear in Win7
The NT Insider, Volume 16, Issue 4, Nov-Dec 2009 (Read 17829 times)
The "newness" of Win7 will likely continue for some time, as will instances of kernel devs finding interesting "features" that will require re-learning of how their daily work is carried out. This article covers some changes in how Win7 systems take crash dumps.
KMDF Basics: Using Counted Queues
The NT Insider, Volume 16, Issue 4, Nov-Dec 2009 (Read 8351 times)
Improvements to the Kernel Mode Driver Framework continue to provide us with new ways to make our life easier.
Kernel Mode Basics: Splay Trees
The NT Insider, Vol 15, Issue 1, March - April 2008 (Read 14884 times)
Another article in a continuing series on Windows kernel mode basics, this issue's topic is that of Windows "Splay Trees".
When is a Queue not just a Queue? WDFQUEUEs
The NT Insider, Vol 14, Issue 3, September - October 2007 (Read 8895 times)
WDFQUEUEs are one of the most best things about KMDF. But, to use them properly, you've got to realize that they're much more than just queues.
Kernel-Mode Basics: Windows Linked Lists
The NT Insider, Vol 14, Issue 3, September - October 2007 (Read 20935 times)
What? You weren't born knowing how InsertHeadList works, and what LIST_ENTRY does? Well, let us tell you then.
Starting Out: Should You Learn WDM or WDF?
The NT Insider, Vol 14, Issue 2, March - April 2007 (Read 14875 times)
Developing Windows WDM drivers is often described as an enormous vertical climb that requires a great amount of knowledge and experience. Can you be a competent driver developer if you just learn WDF, or do you still have to expend the effort required to learn all the details of WDM? That's the question we'll explore in this article.
More on MDLs - MDLs Are Opaque
The NT Insider, Vol 13, Issue 2, March - April 2006 (Read 22263 times)
If MDLs are opaque, what's the right way to gain access to their contents? This article, a follow-on to our article on MDLs, discusses the various methods that are provided for access to the fields in the MDL object.
UMDF 102 - Overview of a UMDF Driver
The NT Insider, Vol 13, Issue 1, Jan-Feb 2006 (Read 12754 times)
Picking up where our UMDF 101 article left off, this article delves into an implementation of a driver based on the User Mode Driver Framework. The time to get your hands dirty is now...
UMDF 101 - Understanding User Mode Driver Frameworks
The NT Insider, Vol 13, Issue 1, Jan-Feb 2006 (Read 20622 times)
Have a device where UMDF applies? This article provides an introduction to the User Mode Driver Framework architecture. Welcome to the world of COM folks...
Updated SeaLevel DIO24 Driver Available
OSR Staff (Read 12470 times)
We've just posted the latest update of our sample KMDF driver for the SeaLevel Systems DIO24 (8008) board.
Beware the (boot)strap
Hector J. Rodriguez (Read 14220 times)
Living with 64-bit Windows has its pitfalls. Of course, one way to deal with this is to keep two different versions installed - but beware if you try to do this from the same boot image.
Why Is The IRQL Always 0xFF When I Do !PCR?
Hector J. Rodriguez (Read 19656 times)
When you're in the debugger, and you type !PCR, the IRQL that's shown is always 0xFF. Can you logically conclude from this that the system had interrupts disabled when it crashed? Microsoft's Jake Oshins gives us the story.
Don't __try to Catch The DbgBreakPoint(...) Exception
Hector J. Rodriguez (Read 13908 times)
I've used it myself. Now, it seems, it hasn't worked the way I thought it worked for years. Community members Ralph Shnelvar and Jamey Kirby discovered a cool bug related to trying to catch the exception raised by DbgBreakPoint()
I Hooked Up The Debugger Using 1394, and NOW...
Hector J. Rodriguez (Read 20112 times)
If you've hooked up the debugger via 1394, you reboot, and your target system is running vvvveeeeeerrrryyyy sllooooowwww or you keep losing your debugger connection, here's why.
WHICH DDK Do I Use??
Hector J. Rodriguez (Read 22862 times)
"Hector... Which DDK and build environment do I use for drivers that are for Windows XP 64-Bit Edition for the X64?" I knew it had to be confusing, because this was a member of the OSR staff asking me this question. OK, let me explain it again...
Device Manager Error Codes
Hector J. Rodriquez (Read 20642 times)
Have you ever wondered what the Device Manager Error Codes mean? A recent KB article explains each Error Code and provides solutions.
Bugchecks Explained: NO_MORE_IRP_STACK_LOCATIONS
OSR Staff (Read 83003 times)
What causes the NO_MORE_IRP_STACK_LOCATIONS bugcheck? In our continuing series of articles on common bugcheck codes, we reveal all.
Bugchecks Explained: KERNEL_DATA_INPAGE_ERROR
OSR Staff (Read 75398 times)
Did your system ever die with KERNEL_DATA_INPAGE_ERROR? Here's what it means.
Bugchecks Explained: PAGE_FAULT_IN_NONPAGED_AREA
OSR Staff (Read 247723 times)
Ever wonder what causes the particularly illogical sounding bugcheck PAGE_FAULT_IN_NONPAGED_AREA? Here are the details, including how to debug the problem and what you might need to look at in your driver to fix it.
Bugchecks Explained: PFN_LIST_CORRUPT
OSR Staff (Read 349416 times)
Ever wonder what causes the bugcheck PFN_LIST_CORRUPT? Here are the details.
How Do I Replace A System File? Try .KDFILES
OSR Staff (Read 23791 times)
The DDK and IFS Kit include buildable drivers but the system file protection feature in Windows makes it difficult to replace the file. This article describes a simple techinque, using the kernel debugger, to replace that file and bypass system file protection.
DDI's That Raise An Exception
(Read 11684 times)
Most Windows Driver Development Interfaces (DDIs) indicate their success or failure by returning a status. But did you know that some also raise exceptions? Here's the list, thanks to NTDEV/NTFSD member (and driver expert) Nick Ryan.
Kernel Driver Frequestly Asked Questions (FAQ)
By The Members of NTDEV and NTFSD (Read 40505 times)
The members of the NTDEV and NTFSD lists answer countless questions on the basic techniques of driver writing. This article is an on-going attempt to capture many of the Frequently Asked Questions and their answers.
Exactly What Is A Driver?
OSR Staff (Read 44803 times)
This article just describes what a driver basically is...a newbie perspective...
What is a Thread?
OSR Staff (Read 44544 times)
This article describes the basics of the term thread and how it is used within Windows.
What is Real Mode?
OSR Staff (Read 38065 times)
The x86 (IA-32) processor can run in different addressing modes, one of which is called Real Mode. This article provides a basic description of real mode processing and its applicability to modern Windows.
What Are Rings
OSR Staff (Read 37264 times)
A term that is still sometimes heard with respect to windows is "ring". This short article explains the term and how it applies to modern Windows...
So What Is A Page Fault?
OSR Staff (Read 155206 times)
Windows is a Demand Paged Virtual Memory System. This means it relies upon a page translation mechanism to map from the memory addresses used by the CPU to the memory addresses used by the computer. This article explains one of the basic concepts in this process - the "page fault".
Resolving Symbol Problems in WinDBG
OSR Staff (Read 128734 times)
Setting up symbols for the WinDBG debugger is often something that gives first time users a problem. This article discusses the basics of setting up symbols with WinDBG and how to diagnose problems.
Rules for Irp Dispatching and Completion Routines
By The Members of NTDEV and NTFSD (Read 30544 times)
If you're new to writing Windows drivers, you probably think IRP handling is "no big thing." After all, you just call IoMarkIrpPending if you need to, and return an appropriate status from your dispatch routine, right? And IRP completion routines probably seem pretty straight forward too, right?
Well, surprise! Once you get beyond the basics, the details of IRP handling is a mine field. Sometimes even trying to do something "simple" can get you in trouble!
This artile presents a set of rules on IRP handling that were developed by the expert members of the Windows system software community (via the NTDEV and NTFSD lists). Read 'em, follow 'em, and you'll stay out of trouble (and save yourself a ton of time in the process).