OSD – Injecting the Windows 7 Kernel Mode Driver Framework (KMDF)

In a recent blog post by fellow Dell TechCenter Rockstar Warren Byle, he announced that many of the new Dell models (this is likely true with other vendors as well) require drives based on the updated Kernel Mode Driver Framework (1.11 at the time of this writing) in order to function properly. With this new driver framework, Microsoft of course provides a hotfix that can be installed or injected into your Windows 7 image.

Now here is the “gotcha”, in order for this to work for OS Deployments, you have 2 options:

  1. Build a brand new WIM file and inject the hotfix (using MDT or DISM). Then import that WIM into SCCM for deployment, test, retest, retest, deploy to production. Not fun.
  2. Package it up and inject it offline during your existing deployments.

I don’t know about you but I prefer #2 and will inject the hotfix during my next image build. So lets go over the steps on just HOW to inject this hotfix (or any really) in an offline way using your existing OSD Task Sequence.

First things first!
Grab the download! Get the one appropriate for your architecture.

 

Extracting the Files

Ok, so you’ve downloaded the necessary files, placed them into a folder labeled “Windows 7 KMDF 1.11” or something like that. Next we need to extract the CAB file out of the .MSU since that is what DISM will use later on.

I prefer to use a tool like 7zip to do this. Just right-click, extract and voila!

Your folder should now look something like this:

 

Package the Files

Now I’m not going to go into details here, I assume that you already know how to create an SCCM package so copy your files, create your package (no program needed) and distribute the content to your DP(s).

 

Task Sequence

Ok, now the “dirty” work. Setting up your Task Sequence to inject the update offline.

The first thing you’ll want to do is check your Format and Partition step. Specifically, we are looking for (or need to set) a variable used to store the “real” drive letter for our OS partition. As you can see from the below screenshot, I’m using “OSDisk” as the Task Sequence variable.

Next we need a new Run Command Line Step to create a Scratch directory used by DISM. I create this because I actually inject quite a few items offline (depending on the scenario) and ensures that DISM has enough space to work with. This step goes anywhere AFTER the OS WIM is dropped onto the system but BEFORE the Setup Windows and ConfigMgr step runs. I have mine after the Apply Windows Settings step.

After the Scratch directory has been created (this gets removed as part of a Post-OSD cleanup script) we add yet another Run Command Line Step to actually inject the update. Here we are using DISM.EXE to inject the .CAB file we extracted earlier. Pay special attention to where %OSDisk% is referenced. You may need to change this to whatever variable you are referencing in your Format and Partition Step.

If you are having trouble reading that command, here it is (watch for word wrap!):

cmd.exe /c X:\windows\system32\dism.exe /ScratchDir:%OSDisk%\Scratch /Image:%OSDisk%\ /Add-Package /PackagePath:%_SMSTSMDataPath%\Packages\EB20019E\Windows6.1-KB2685811-x64.cab

 

And there you have it. Once these steps apply your driver framework should be updated. As Windows 7 first boots into the OS and begins to process the drivers you injected, it will be working with the updated framework and your system (and deployment tech) should be happy.