Trivia: what’s in a name?

Ever notice that the KMDF DDIs do not actually have KMDF in their names?  Well, there is an interesting history behind that. 

When the project started, the framework was called DFX, as in Driver Frameworks (X), similar to how MFC was originally called AFX (Application Frameworks (X)).  This was a nice name, all of our APIs started with Dfx and the structures with DFX.  But then we learned of the DIFX project from the device setup folks and DFX and DIFX were too similar, especially when both dealt with device drivers.  Out went DFX.

To replace DFX, we used DFW (again, Driver FrameWorks with out the cute X).  A pretty obvious transition, no?  Now our DDIs started with Dfw and the structs with DFW.  I had to write some scripts which groped through the tree to do the conversion and then edit them by hand to fix the outliers (I have never claimed that I can write shell scripts well 😉 ).  Somewhat annoying, but nothing too bad.  Besides, we didn’t have a very large install base at the time so it was a rather localized change.  Well, DFW turned out to be no good either because it had zero branding associated with it, so out went DFW.

To replace DFW, we picked WDF (Windows Driver Framework).  I had to reuse my renaming scripts to make the conversion a 2nd time, this time being more painful because we had a larger code base.  All is well and we continue with development, DDIs start with Wdf, structs with WDF.  After some time, it is decided that we should start up UMDF alongside the kernel WDF project, so WDF was changed into Windows Driver Foundation so that it covered both projects and what was the kernel mode WDF became KMDF.  At this point, I put my foot down and told our PM there was no way I was rerunning my scripts 😉 … there were too many files to change and it was too late in the project.  So, this is why the project is known as KMDF but you don’t see KMDF anywhere in any header!

Comments (1)

  1. ali says:

    Its pretty interesting story, glad to hear that script saved you’re time and * 😉  Yeah shell can really do some tricky things, I remember that I was about to burn a data CD and the burning software was kind of outdated. I was stuck to put all the file names (contents) with appropriate directory path in a single file for my reference. Then I just got an idea and kicked my command with “dir/s > contents” and got the solution in no time.


Skip to main content