<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">driver writing != bus driving</title><subtitle type="html">Ilias Tsigkogiannis' Introduction to Windows Device Drivers</subtitle><id>http://blogs.msdn.com/iliast/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/iliast/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-04-03T19:12:00Z</updated><entry><title>New Blog: USB Core Team</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/10/06/new-blog-usb-core-team.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/10/06/new-blog-usb-core-team.aspx</id><published>2009-10-07T02:37:00Z</published><updated>2009-10-07T02:37:00Z</updated><content type="html">&lt;P&gt;The USB core team has started a new blog: &lt;A href="http://blogs.msdn.com/usbcoreblog/" mce_href="http://blogs.msdn.com/usbcoreblog/"&gt;http://blogs.msdn.com/usbcoreblog/&lt;/A&gt;. They'll be discussing about everything that&amp;nbsp;is related to USB.&lt;/P&gt;
&lt;P&gt;Welcome to the blogosphere USB Team :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9904037" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author></entry><entry><title>KMDF Debugging Videos</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/09/22/kmdf-debugging-videos.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/09/22/kmdf-debugging-videos.aspx</id><published>2009-09-22T22:29:00Z</published><updated>2009-09-22T22:29:00Z</updated><content type="html">&lt;P&gt;A while ago, I wrote a &lt;A class="" href="http://blogs.msdn.com/iliast/archive/2009/06/09/umdf-debugging-videos.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2009/06/09/umdf-debugging-videos.aspx"&gt;blog post&lt;/A&gt; about our &lt;A class="" href="http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx" mce_href="http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx"&gt;UMDF debugging videos&lt;/A&gt;, which were created by my teammate Abhishek.&lt;/P&gt;
&lt;P&gt;Now, I'm really excited to announce that we've released KMDF debugging videos, which can be found at &lt;A class="" href="http://www.microsoft.com/whdc/devtools/debugging/kmdf.mspx" mce_href="http://www.microsoft.com/whdc/devtools/debugging/kmdf.mspx"&gt;http://www.microsoft.com/whdc/devtools/debugging/kmdf.mspx&lt;/A&gt;. These videos were created by my teammate Kumar. They present 3 important aspects of KMDF debugging:&lt;/P&gt;
&lt;P&gt;1) &lt;A class="" href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-1.wvx" mce_href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-1.wvx"&gt;How to debug the KMDF log&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;2) &lt;A class="" href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-2.wvx" mce_href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-2.wvx"&gt;How to get information about a driver and its objects&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;3) &lt;A class="" href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-3.wvx" mce_href="http://www.microsoft.com/whdc/media/WinLogo/Debugging-KMDF-Drivers-Part-3.wvx"&gt;How to dump all the devices and queues&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898152" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/iliast/archive/tags/Debugging/default.aspx" /><category term="windbg" scheme="http://blogs.msdn.com/iliast/archive/tags/windbg/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>WDF Logo Requirements Regarding Coinstallers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/08/13/wdf-logo-requirements-regarding-coinstallers.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/08/13/wdf-logo-requirements-regarding-coinstallers.aspx</id><published>2009-08-14T02:51:00Z</published><updated>2009-08-14T02:51:00Z</updated><content type="html">&lt;P&gt;I've been asked many times, if a driver developer can avoid using WDF coinstallers. The answer is "yes, if the system already has the needed version of WDF installed (e.g. you want to install a WDF 1.5 driver in Vista RTM)". So, the next question that usually comes up is "Will I be able to have my WDF driver, which has no coinstaller, WHQL-signed". So, in this post I'll explain our WDF Logo requirements that are related to the coinstallers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;PART 1: WDF Logo Requirement&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The official name of the requirement is “DEVFUND-0039: Windows Driver Framework (WDF) drivers are packaged to contain the RTM fre versions of redistributables”, but the title is very misleading!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;The current situation (in WLK 1.4) for WHQL-signing is:&lt;/U&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Win7 + WDF 1.9: No coinstaller restrictions. This means that you can use any WDF 1.9 coinstaller (beta, RC, RTM, intermediate builds, etc) or you can use no coinstaller. Since the coinstaller is not used to update a Win7 system, we wanted to allow driver submissions before Win7 RTMed, so this is a temporary policy. Now that the WDF 1.9 RTM coinstallers&amp;nbsp;are out, it is suggested that you use those. We might update WLK 1.4 with a QFE to make the usage of the RTM coinstallers mandatory.&lt;/LI&gt;
&lt;LI&gt;Win7 + WDF 1.0-1.7: You can use either an RTM coinstaller or no coinstaller&lt;/LI&gt;
&lt;LI&gt;Windows 2000-Vista + WDF 1.9: You need to use the RTM WDF 1.9 coinstaller or no coinstaller. &lt;U&gt;If you use the coinstaller, then you need to install the latest errata filters from &lt;A href="http://winqual.microsoft.com/" mce_href="http://winqual.microsoft.com"&gt;http://winqual.microsoft.com&lt;/A&gt;, (under the name “&lt;A href="https://winqual.microsoft.com/member/SubmissionWizard/LegalExemptions/updatefilters.cab" mce_href="https://winqual.microsoft.com/member/SubmissionWizard/LegalExemptions/updatefilters.cab"&gt;WLK Update Filters&lt;/A&gt;”) and apply them on the DTM controller.&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Windows 2000-Vista + WDF 1.0-1.7: You can use any RTM WDF coinstaller or no coinstaller (of course, you need to make sure that the needed version of WDF is already inbox if you don't submit a coinstaller).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;U&gt;After WLK 1.5 comes out (October 2009) the WHQL-signing situation will be:&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;For all operating systems and all versions of WDF (1.0 - 1.9) you can use either an RTM coinstaller or no coinstaller (if&amp;nbsp;you don't submit a coinstaller, then&amp;nbsp;the same restrictions as above will apply).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTES&lt;/STRONG&gt;:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;If you don't submit a coinstaller, then you'll get a warning (not an error) saying that you it's possible that in downlevel operating systems your driver might not be working (e.g. a WDF 1.7 driver will work in Vista SP1 without a coinstaller but not in Vista RTM).&lt;/LI&gt;
&lt;LI&gt;As noted above, if you have an older version of the WDK, you can still compile a WDF 1.5 driver, submit it for WHQL-signing bundled with the WDF 1.5 RTM coinstaller (or no coinstaller in Vista+). Of course, this means that you'll be using older tools (compiler, prefast, etc) to build/validate your driver.&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;PART 2: Sample INFs&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Now let's go to the inf files. What changes need to be made, if you are sure that you don't need a coinstaller?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1) KMDF&lt;/STRONG&gt;: Remove all references to wdfcoinstaller0100X.dll from the inx. I'm using the echo sample from the Win7 RTM WDK as an example:&lt;/P&gt;
&lt;P&gt;;&lt;BR&gt;; echo.inf&lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;[Version]&lt;BR&gt;Signature="$WINDOWS NT$"&lt;BR&gt;Class=Sample&lt;BR&gt;ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}&lt;BR&gt;Provider=%MSFT%&lt;BR&gt;DriverVer=06/21/2006,6.1.7600.16385&lt;BR&gt;CatalogFile=KmdfSamples.cat&lt;/P&gt;
&lt;P&gt;[DestinationDirs]&lt;BR&gt;DefaultDestDir = 12&lt;/P&gt;
&lt;P&gt;; ================= Class section =====================&lt;/P&gt;
&lt;P&gt;[ClassInstall32]&lt;BR&gt;Addreg=SampleClassReg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;[SampleClassReg]&lt;BR&gt;HKR,,,0,%ClassName%&lt;BR&gt;HKR,,Icon,,-5&lt;/P&gt;
&lt;P&gt;[SourceDisksNames]&lt;BR&gt;1 = %DiskId1%,,,""&lt;/P&gt;
&lt;P&gt;[SourceDisksFiles]&lt;BR&gt;ECHO.sys&amp;nbsp; = 1,,&lt;/P&gt;
&lt;P&gt;;*****************************************&lt;BR&gt;; ECHO&amp;nbsp; Install Section&lt;BR&gt;;*****************************************&lt;/P&gt;
&lt;P&gt;[Manufacturer]&lt;BR&gt;%StdMfg%=Standard,NTx86&lt;/P&gt;
&lt;P&gt;; Following section is meant for Windows 2000 as it &lt;BR&gt;; cannot parse decorated model sections&lt;BR&gt;[Standard]&lt;BR&gt;;&lt;BR&gt;; Hw Id is root\ECHO&lt;BR&gt;;&lt;BR&gt;%ECHO.DeviceDesc%=ECHO_Device, root\ECHO&lt;/P&gt;
&lt;P&gt;; Decorated model section take precedence over undecorated &lt;BR&gt;; ones on XP and later.&lt;BR&gt;[Standard.NTx86]&lt;BR&gt;%ECHO.DeviceDesc%=ECHO_Device, root\ECHO&lt;/P&gt;
&lt;P&gt;[ECHO_Device.NT]&lt;BR&gt;CopyFiles=Drivers_Dir&lt;/P&gt;
&lt;P&gt;[Drivers_Dir]&lt;BR&gt;ECHO.sys&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;;-------------- Service installation&lt;BR&gt;[ECHO_Device.NT.Services]&lt;BR&gt;AddService = ECHO,%SPSVCINST_ASSOCSERVICE%, ECHO_Service_Inst&lt;/P&gt;
&lt;P&gt;; -------------- ECHO driver install sections&lt;BR&gt;[ECHO_Service_Inst]&lt;BR&gt;DisplayName&amp;nbsp;&amp;nbsp;&amp;nbsp; = %ECHO.SVCDESC%&lt;BR&gt;ServiceType&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; SERVICE_KERNEL_DRIVER&lt;BR&gt;StartType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; SERVICE_DEMAND_START &lt;BR&gt;ErrorControl&amp;nbsp;&amp;nbsp; = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; SERVICE_ERROR_NORMAL&lt;BR&gt;ServiceBinary&amp;nbsp; = %12%\ECHO.sys&lt;BR&gt;LoadOrderGroup = Extended Base&lt;/P&gt;
&lt;P&gt;;&lt;BR&gt;;--- ECHO_Device Coinstaller installation ------&lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;[DestinationDirs]&lt;BR&gt;ECHO_Device_CoInstaller_CopyFiles = 11&lt;/P&gt;
&lt;P&gt;[Strings]&lt;BR&gt;SPSVCINST_ASSOCSERVICE= 0x00000002&lt;BR&gt;MSFT = "Microsoft"&lt;BR&gt;StdMfg = "(Standard system devices)"&lt;BR&gt;DiskId1 = "WDF Sample ECHO Installation Disk #1"&lt;BR&gt;ECHO.DeviceDesc = "Sample WDF ECHO Driver"&lt;BR&gt;ECHO.SVCDESC = "Sample WDF ECHO Service"&lt;BR&gt;ClassName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "Sample Device"&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;I've removed the sections ECHO_Device.NT.CoInstallers, ECHO_Device_CoInstaller_AddReg, ECHO_Device_CoInstaller_CopyFiles, SourceDiskFiles (the one at the bottom) and ECHO_Device.NT.Wdf.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2) UMDF&lt;/STRONG&gt;: You need to replace WUDFUpdate_0100X.dll with the inbox coinstaller wudfcoinstaller.dll, which is always installed as part of UMDF (i.e. you don't need to have it as part of your driver package). I'm using the UMDF echo sample from the Win7 RTM WDK.&lt;/P&gt;
&lt;P&gt;;&lt;BR&gt;; WUDFEchoDriver.inf&lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;[Version]&lt;BR&gt;Signature="$WINDOWS NT$"&lt;BR&gt;Class=Sample&lt;BR&gt;ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}&lt;BR&gt;Provider=%MSFTWUDF%&lt;BR&gt;CatalogFile=WUDF.cat&lt;BR&gt;DriverVer=06/21/2006,6.1.7600.16385&lt;/P&gt;
&lt;P&gt;[Manufacturer]&lt;BR&gt;%MSFTWUDF%=Microsoft,NTx86&lt;/P&gt;
&lt;P&gt;[Microsoft.NTx86]&lt;BR&gt;%EchoDeviceName%=Echo_Install,WUDF\Echo&lt;/P&gt;
&lt;P&gt;[ClassInstall32]&lt;BR&gt;AddReg=SampleClass_RegistryAdd&lt;/P&gt;
&lt;P&gt;[SampleClass_RegistryAdd]&lt;BR&gt;HKR,,,,%ClassName%&lt;BR&gt;HKR,,Icon,,"-10"&lt;/P&gt;
&lt;P&gt;[SourceDisksFiles]&lt;BR&gt;WUDFEchoDriver.dll=1&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;[SourceDisksNames]&lt;BR&gt;1 = %MediaDescription%&lt;/P&gt;
&lt;P&gt;; =================== WUDF Echo Test Driver ==================================&lt;/P&gt;
&lt;P&gt;[Echo_Install.NT]&lt;BR&gt;CopyFiles=UMDriverCopy&lt;/P&gt;
&lt;P&gt;[Echo_Install.NT.hw]&lt;/P&gt;
&lt;P&gt;[Echo_Install.NT.Services]&lt;BR&gt;AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall&lt;/P&gt;
&lt;P&gt;[Echo_Install.NT.CoInstallers]&lt;BR&gt;AddReg = CoInstallers_AddReg&lt;BR&gt;CopyFiles = CoInstallers_CopyFiles&lt;/P&gt;
&lt;P&gt;[Echo_Install.NT.Wdf]&lt;BR&gt;UmdfService=WUDFEchoDriver,WUDFEchoDriver_Install&lt;BR&gt;UmdfServiceOrder=WUDFEchoDriver&lt;/P&gt;
&lt;P&gt;[WUDFEchoDriver_Install]&lt;BR&gt;UmdfLibraryVersion=1.9.0&lt;BR&gt;DriverCLSID={7AB7DCF5-D1D4-4085-9547-1DB968CCA720}&lt;BR&gt;ServiceBinary=%12%\UMDF\WUDFEchoDriver.dll&lt;/P&gt;
&lt;P&gt;[WUDFRD_ServiceInstall]&lt;BR&gt;DisplayName = %WudfRdDisplayName%&lt;BR&gt;ServiceType = 1&lt;BR&gt;StartType = 3&lt;BR&gt;ErrorControl = 1&lt;BR&gt;ServiceBinary = %12%\WUDFRd.sys&lt;BR&gt;LoadOrderGroup = Base&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;[CoInstallers_AddReg]&lt;BR&gt;HKR,,CoInstallers32,0x00010000,"WudfCoinstaller.dll"&lt;/P&gt;
&lt;P&gt;[CoInstallers_CopyFiles]&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;[DestinationDirs]&lt;BR&gt;UMDriverCopy=12,UMDF ; copy to drivers\UMDF&lt;BR&gt;CoInstallers_CopyFiles=11&lt;/P&gt;
&lt;P&gt;[UMDriverCopy]&lt;BR&gt;WUDFEchoDriver.dll&lt;/P&gt;
&lt;P&gt;; =================== Generic ==================================&lt;/P&gt;
&lt;P&gt;[Strings]&lt;BR&gt;MSFTWUDF="Microsoft Internal (WUDF)"&lt;BR&gt;MediaDescription="Microsoft WUDF Sample Driver Installation Media"&lt;BR&gt;ClassName="Sample Device"&lt;BR&gt;WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework Reflector"&lt;BR&gt;EchoDeviceName="Sample WUDF Echo Driver"&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3) KMDF 1.9 + UMDF 1.9 + WinUSB 1.9:&lt;/STRONG&gt; In the Win7 RTM WDK we do have&amp;nbsp;the sample WudfBioUsbSample.inf that uses all 3 frameworks. This would normally use 3 coinstallers, however, since the sample is Win7-only and these components are all inbox, we don't need to use coinstallers. I've pasted the inf file directly&amp;nbsp;from the WDK with minor stylistic modifications.&lt;/P&gt;
&lt;P&gt;;&lt;BR&gt;; WudfBioUsbSample.inf - Install the OSR USB user-mode driver - WBDI sample&lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;[Version]&lt;BR&gt;Signature="$Windows NT$"&lt;BR&gt;Class=Biometric&lt;BR&gt;ClassGuid={53D29EF7-377C-4D14-864B-EB3A85769359}&lt;BR&gt;Provider=%MSFTUMDF%&lt;BR&gt;CatalogFile=biometrics.cat&lt;BR&gt;DriverVer=06/21/2006,6.1.7600.16385&lt;/P&gt;
&lt;P&gt;[Manufacturer]&lt;BR&gt;%MSFTUMDF%=Microsoft,NTx86&lt;/P&gt;
&lt;P&gt;[Microsoft.NTx86]&lt;BR&gt;%OsrUsbDeviceName%=Biometric_Install, USB\VID_0547&amp;amp;PID_1002&lt;/P&gt;
&lt;P&gt;[ClassInstall32]&lt;BR&gt;AddReg=BiometricClass_RegistryAdd&lt;/P&gt;
&lt;P&gt;[BiometricClass_RegistryAdd]&lt;BR&gt;HKR,,,,%ClassName%&lt;BR&gt;HKR,,Icon,,"-201"&lt;BR&gt;HKR,,IconPath,0x00010000,"%SYSTEMROOT%\system32\SysClass.dll,-201"&lt;/P&gt;
&lt;P&gt;[SourceDisksFiles]&lt;BR&gt;WudfBioUsbSample.dll=1&lt;BR&gt;EngineAdapter.dll=1 ; Vendor engine adapter&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;[SourceDisksNames]&lt;BR&gt;1 = %MediaDescription%&lt;/P&gt;
&lt;P&gt;; =================== UMDF OsrUsb Device - WBDI IOCTL interface ==================================&lt;/P&gt;
&lt;P&gt;[Biometric_Install.NT]&lt;BR&gt;CopyFiles=UMDriverCopy, WinBioEngineAdapterCopy&lt;BR&gt;AddProperty=Device_Properties&lt;BR&gt;Include=WINUSB.INF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Import sections from WINUSB.INF&lt;BR&gt;Needs=WINUSB.NT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Run the CopyFiles &amp;amp; AddReg directives for WinUsb.INF&lt;/P&gt;
&lt;P&gt;[Biometric_Install.NT.hw]&lt;BR&gt;AddReg=Biometric_Device_AddReg&lt;BR&gt;AddReg=DriverPlugInAddReg, DatabaseAddReg&lt;/P&gt;
&lt;P&gt;[Device_Properties]&lt;BR&gt;DeviceIcon,,,,"%SYSTEMROOT%\system32\SysClass.dll,-201" ; This is where a device specific icon can be specified.&lt;/P&gt;
&lt;P&gt;[Biometric_Install.NT.Services]&lt;BR&gt;AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall&amp;nbsp; ; flag 0x2 sets this as the service for the device&lt;BR&gt;AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall&amp;nbsp; ; this service is installed because its a filter.&lt;/P&gt;
&lt;P&gt;[Biometric_Install.NT.Wdf]&lt;BR&gt;KmdfService=WINUSB, WinUsb_Install&lt;BR&gt;UmdfDispatcher=WinUsb&lt;BR&gt;UmdfService=WudfBioUsbSample, WudfBioUsbSample_Install&lt;BR&gt;UmdfServiceOrder=WudfBioUsbSample&lt;/P&gt;
&lt;P&gt;[Biometric_Install.NT.CoInstallers]&lt;BR&gt;AddReg=CoInstallers_AddReg&lt;BR&gt;CopyFiles=CoInstallers_CopyFiles&lt;/P&gt;
&lt;P&gt;[WinUsb_Install]&lt;BR&gt;KmdfLibraryVersion = 1.9&lt;/P&gt;
&lt;P&gt;[WudfBioUsbSample_Install]&lt;BR&gt;UmdfLibraryVersion=1.9.0&lt;BR&gt;DriverCLSID = "{F1CB3C15-A916-47bc-BEA1-D5D4163BC6AE}"&lt;BR&gt;ServiceBinary = "%12%\UMDF\WudfBioUsbSample.dll"&lt;/P&gt;
&lt;P&gt;[Biometric_Device_AddReg]&lt;BR&gt;HKR,,"DeviceCharacteristics",0x10001,0x0100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Use same security checks on relative opens&lt;BR&gt;HKR,,"Security",,"D:P(A;;GA;;;BA)(A;;GA;;;SY)"&amp;nbsp; ; Allow generic-all access to Built-in administrators and Local system&lt;BR&gt;HKR,,"LowerFilters",0x00010008,"WinUsb"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND&lt;BR&gt;HKR,,"Exclusive",0x10001,1&lt;BR&gt;HKR,,"SystemWakeEnabled",0x00010001,1&lt;BR&gt;HKR,,"DeviceIdleEnabled",0x00010001,1&lt;BR&gt;HKR,,"UserSetDeviceIdleEnabled",0x00010001,1&lt;BR&gt;HKR,,"DefaultIdleState",0x00010001,1&lt;BR&gt;HKR,,"DefaultIdleTimeout",0x00010001,5000&lt;/P&gt;
&lt;P&gt;[DriverPlugInAddReg]&lt;BR&gt;HKR,WinBio\Configurations,DefaultConfiguration,,"0"&lt;BR&gt;HKR,WinBio\Configurations\0,SensorMode,0x10001,1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Basic - 1, Advanced - 2&lt;BR&gt;HKR,WinBio\Configurations\0,SystemSensor,0x10001,1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; UAC/Winlogon - 1&lt;BR&gt;HKR,WinBio\Configurations\0,SensorAdapterBinary,,"WinBioSensorAdapter.DLL"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Windows built-in WBDI sensor adapter.&lt;BR&gt;HKR,WinBio\Configurations\0,EngineAdapterBinary,,"EngineAdapter.DLL"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Vendor engine&lt;BR&gt;HKR,WinBio\Configurations\0,StorageAdapterBinary,,"WinBioStorageAdapter.DLL"&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Windows built-in storage adapter&lt;BR&gt;HKR,WinBio\Configurations\0,DatabaseId,,"6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50"&amp;nbsp; ; Unique database GUID&lt;/P&gt;
&lt;P&gt;[DatabaseAddReg]&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},BiometricType,0x00010001,0x00000008&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},Attributes,0x00010001,0x00000001&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},Format,,"00000000-0000-0000-0000-000000000000"&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},InitialSize,0x00010001,0x00000020&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},AutoCreate,0x00010001,0x00000001&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},AutoName,0x00010001,0x00000001&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},FilePath,,""&lt;BR&gt;HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},ConnectionString,,""&lt;/P&gt;
&lt;P&gt;[WUDFRD_ServiceInstall]&lt;BR&gt;DisplayName = %WudfRdDisplayName%&lt;BR&gt;ServiceType = 1&lt;BR&gt;StartType = 3&lt;BR&gt;ErrorControl = 1&lt;BR&gt;ServiceBinary = %12%\WUDFRd.sys&lt;BR&gt;LoadOrderGroup = Base&lt;/P&gt;
&lt;P&gt;[WinUsb_ServiceInstall]&lt;BR&gt;DisplayName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = %WinUsb_SvcDesc%&lt;BR&gt;ServiceType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1&lt;BR&gt;StartType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3&lt;BR&gt;ErrorControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1&lt;BR&gt;ServiceBinary&amp;nbsp;&amp;nbsp; = %12%\WinUSB.sys&lt;/P&gt;
&lt;P&gt;[CoInstallers_AddReg]&lt;BR&gt;HKR,,CoInstallers32,0x00010000,"WudfCoinstaller.dll"&lt;/P&gt;
&lt;P&gt;[CoInstallers_CopyFiles]&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;[DestinationDirs]&lt;BR&gt;UMDriverCopy=12,UMDF ; copy to \Windows\System32\drivers\UMDF&lt;BR&gt;WinBioEngineAdapterCopy=11,WinBioPlugins ; copy to \Windows\System32\WinBioPlugins&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;[UMDriverCopy]&lt;BR&gt;WudfBioUsbSample.dll&lt;/P&gt;
&lt;P&gt;[WinBioEngineAdapterCopy]&lt;BR&gt;EngineAdapter.dll&lt;/P&gt;
&lt;P&gt;; =================== Generic ==================================&lt;/P&gt;
&lt;P&gt;[Strings]&lt;BR&gt;MSFTUMDF="Microsoft Internal (WDF:UMDF)"&lt;BR&gt;MediaDescription="Microsoft Sample Driver Installation Media"&lt;BR&gt;ClassName="Biometric Devices"&lt;BR&gt;WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework Reflector"&lt;BR&gt;OsrUsbDeviceName="WUDF Fx2 WBDI sample" &lt;BR&gt;WinUsb_SvcDesc="WinUSB Driver"&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9869092" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>UMDF Debugging Videos</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/06/09/umdf-debugging-videos.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/06/09/umdf-debugging-videos.aspx</id><published>2009-06-10T04:29:00Z</published><updated>2009-06-10T04:29:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;UPDATE:&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;You can find my post about KMDF debugging videos at &lt;A href="http://blogs.msdn.com/iliast/archive/2009/09/22/kmdf-debugging-videos.aspx"&gt;http://blogs.msdn.com/iliast/archive/2009/09/22/kmdf-debugging-videos.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A while back I had written that we didn't have any videos, where we talk about UMDF (KMDF seems to get all the glory :P). Well, now we do!&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;My teammate, Abhishek, has created a series of tutorials that describe how to debug UMDF drivers. They can be found at &lt;A href="http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx" mce_href="http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx"&gt;http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx&lt;/A&gt;. I've been through all the videos a few times and I think that they are very helpful and present some very nice tricks. I suggest that you install a UMDF driver and go through the same tasks that Abhishek is describing, in order to understand the tutorials better.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Feel free to give me any feedback (or any thank-you comments) that you want me to tell Abhishek :)&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9720591" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/iliast/archive/tags/Debugging/default.aspx" /><category term="windbg" scheme="http://blogs.msdn.com/iliast/archive/tags/windbg/default.aspx" /></entry><entry><title>Viewing WDF Logs In Windbg</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/06/09/viewing-wdf-logs-in-windbg.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/06/09/viewing-wdf-logs-in-windbg.aspx</id><published>2009-06-10T03:44:00Z</published><updated>2009-06-10T03:44:00Z</updated><content type="html">&lt;p&gt;One feature that is really helpful in debugging WDF drivers is the log file that is created by the frameworks themselves. In the log files you can see many warnings and errors that are created &lt;u&gt;by the framework&lt;/u&gt; (i.e. they come for free and the driver does not have to do anything). Did you ever have a problem trying to understand why a call to a WDF function fails or what the framework is doing under the hood? Then, continue reading:&lt;/p&gt;&lt;p&gt;In this post I'll explain how to look at the framework log files, while you're debugging a driver using windbg. I assume that you have already installed the WDK in the directory %winddk%.&lt;br&gt;&lt;/p&gt;&lt;p&gt;So, let's start with UMDF:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You need to debug the wudfhost application that hosts your driver. This is described in an &lt;a href="http://blogs.msdn.com/iliast/archive/2008/02/01/debugging-user-mode-processes-using-a-kernel-mode-debugger.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2008/02/01/debugging-user-mode-processes-using-a-kernel-mode-debugger.aspx"&gt;earlier post of mine&lt;/a&gt;.&amp;nbsp;&lt;/li&gt;&lt;li&gt;In windbg execute the command "!wmitrace.searchpath %winddk%\tools\tracing\%arch%", e.g. "&lt;b&gt;!wmitrace.searchpath c:\WinDDK\6001\tools\tracing\x86&lt;/b&gt;". The directory that you use should have files with names wdf01007.tmf, wdf01009.tmf, etc.&lt;/li&gt;&lt;li&gt;Execute the command "&lt;b&gt;!wmitrace.strdump&lt;/b&gt;" and find the number that corresponds to "WUDF Trace". Let's say that this number is 0x11.&lt;/li&gt;&lt;li&gt;Execute the command "!wmitrace.logdump number_from_previous_step", e.g. "&lt;b&gt;!wmitrace.logdump 0x11&lt;/b&gt;"&lt;/li&gt;&lt;li&gt;In order to control the verbosity of the output, you can use WdfVerifier, which can be found at %winddk%\tools\wdf\%arch%\wdfverifier.exe. Select the tab "User Mode Driver Settings" and change the tracing level. Also, enable the option "Send Log Output to Kernel Debugger". These options are global (i.e. they will be applied to all UMDF drivers)&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;For KMDF, things are easier:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Load wdfkd in windbg. This file is located at %winddk%\bin\%arch%. In order to load it execute "!load %winddk%\bin\%arch%\wdfkd.dll", e.g. "&lt;b&gt;!load c:\WinDDK\6001\bin\x86\wdfkd.dll&lt;/b&gt;"&lt;br&gt;&lt;/li&gt;&lt;li&gt;Execute "!wdftmffile %winddk%\tools\tracing\&amp;lt;arch&amp;gt;\wdf01009.tmf", e.g. "&lt;b&gt;!wdftmffile c:\WinDDK\tools\tracing\x86\wdf01009.tmf&lt;/b&gt;". Make sure that the file wdf01009.tmf is in that directory. If you are debugging a KMDF 1.7 driver, then you need to use the file wdf01007.tmf, etc.&lt;/li&gt;&lt;li&gt;Execute "!wdflogdump my_driver" to see the log for your driver. For example, if you are debugging the echo driver, execute "&lt;b&gt;!wdflogdump echo&lt;/b&gt;".&lt;/li&gt;&lt;li&gt;In order to control the verbosity, you can use WdfVerifier. Select the "Kernel Mode User Driver Settings" tab, select your driver in the left panel and then either select or de-select the option "Enable verbose logging". This option is per-driver, i.e. if you want to enable verbose logging for multiple drivers, then you need to select all of them in the left panel.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9720172" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/iliast/archive/tags/Debugging/default.aspx" /><category term="windbg" scheme="http://blogs.msdn.com/iliast/archive/tags/windbg/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>Analyzing the Installation of WDF 1.7 and 1.9 drivers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/06/09/analyzing-the-installation-of-wdf-1-7-and-1-9-drivers.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/06/09/analyzing-the-installation-of-wdf-1-7-and-1-9-drivers.aspx</id><published>2009-06-09T22:11:00Z</published><updated>2009-06-09T22:11:00Z</updated><content type="html">&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="PowerPoint.Slide"&gt;&lt;meta name="Generator" content="Microsoft PowerPoint 12"&gt;&lt;span style="font-size: 18pt; font-family: 'Trebuchet MS'; color: white;"&gt;&lt;/span&gt;
&lt;p&gt;Many months ago I had written a post &lt;a href="http://blogs.msdn.com/iliast/archive/2007/11/28/analyzing-the-installation-of-umdf-and-kmdf-1-5-drivers.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2007/11/28/analyzing-the-installation-of-umdf-and-kmdf-1-5-drivers.aspx"&gt;analyzing the installation of WDF 1.5 drivers&lt;/a&gt;. Now that WDF 1.9 is almost out of the door, it's time to do the same thing for WDF 1.7 and 1.9. The differences in the coinstallers for these 2 versions are small, so the installation experience is almost the same. I'll try to point out any differences. For the purpose of this post, I'll use the WDF 1.9 RC coinstallers. A big part of this post was presented in more depth at WinHEC 2008 by &lt;a href="http://blogs.msdn.com/bobkjelgaard/" mce_href="http://blogs.msdn.com/bobkjelgaard/"&gt;Bob Kjeelgaard&lt;/a&gt; and me (&lt;a href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx" mce_href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx"&gt;the presentation can be found here&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;b&gt;PART 1: UMDF&lt;/b&gt;&lt;/u&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Let's start with the installation of a UMDF driver. I'll use the echo sample from the WDK. It can be found at %WinDDK%\6001\src\umdf\echo (for UMDF 1.7) and%WinDDK%\%version%\src\general\echo\umdf (for UMDF 1.9). After compiling the sample, you need to put the following files in one directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The UMDF coinstaller (%WinDDK%\%version%\redist\wdf\x86\WUDFUpdate_0100X.dll), where X is either 7 or 9&lt;br&gt;&lt;/li&gt;

&lt;li&gt;The echo driver (WUDFEchoDriver.dll)&lt;/li&gt;

&lt;li&gt;The inf file (WUDFEchoDriver.inf)&lt;/li&gt;

&lt;li&gt;devcon (%WinDDK%\%version%\tools\devcon\i386\devcon.exe)&lt;/li&gt;

&lt;li&gt;Even
though it's not mandatory, it might be useful for debugging to have the
pdb file of the driver
(WUDFEchoDriver.pdb)&lt;/li&gt;
&lt;/ul&gt;
Now in order to install the driver, you can go to a command prompt and use the command&lt;br&gt;devcon install WUDFEchoDriver.inf WUDF\Echo&lt;br&gt;&lt;br&gt;If everything goes well, you should see the following output:&lt;br&gt;&lt;br&gt;&amp;gt;devcon install WudfEchoDriver.inf WUDF\Echo&lt;br&gt;Device node created. Install is complete when drivers are installed...&lt;br&gt;Updating drivers for WUDF\Echo from WudfEchoDriver.inf.&lt;br&gt;Drivers installed successfully.&lt;br&gt;&lt;br&gt;If there's a problem, then you'll see something like:&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&amp;gt;devcon install WudfEchoDriver.inf WUDF\Echo&lt;br&gt;Device node created. Install is complete when drivers are installed...&lt;br&gt;Updating drivers for WUDF\Echo from WudfEchoDriver.inf.&lt;br&gt;devcon failed.&lt;br&gt;
&lt;p&gt;The first file that you can look at foir more information regarding the installation is %windir%\setupact.log. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 1: &lt;/b&gt;&lt;b&gt;SUCCESSFUL &lt;/b&gt;&lt;b&gt;INSTALLATION WITHOUT UPDATE&lt;/b&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;In the case of a succesful installation you should see something like:&lt;/p&gt;

&lt;p&gt;WudfUpdate: installing version (1,9,0,7100).&lt;br&gt;WudfUpdate: Checking for presence of previous UMDF installation.&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.9.0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.9.0.7100)&lt;br&gt;WudfUpdate: UMDF installation is same as update.
WudfUpdate: Loading configuration coinstaller from D:\Windows\system32\wudfcoinstaller.dll.&lt;br&gt;WudfCoInstaller: ReadWdfSection: Checking WdfSection [Echo_Install.NT.Wdf]&lt;br&gt;WudfCoInstaller: Configuring UMDF Service&amp;nbsp; WUDFEchoDriver.&lt;br&gt;WudfCoInstaller: Service WudfSvc is already running.&lt;br&gt;WudfCoInstaller: Final status: error(0) The operation completed successfully.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;As you see in the above scenario, the coinstaller initially looks at the version of all the UMDF files that are installed in the system and does the following checks to determine, if an update is required:&lt;/p&gt;

&lt;p&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="PowerPoint.Slide"&gt;&lt;meta name="Generator" content="Microsoft PowerPoint 12"&gt;1) If max on-disk file version &amp;gt; co-installer -&amp;gt; NO UPDATE&lt;br&gt;2) If max on-disk file version == co-installer BUT mismatched versions found (or missing files)-&amp;gt; damaged installation -&amp;gt; UPDATE&lt;br&gt;3) If all on-disk file versions == co-installer AND&amp;gt;= 1 UMDF service cannot be opened (wudfsvc, wudfrd, wudfpf) -&amp;gt; UPDATE&lt;br&gt;4) If all on-disk file versions &amp;lt; co-installer -&amp;gt; UPDATE&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 2: &lt;/b&gt;&lt;b&gt;SUCCESSFUL &lt;/b&gt;&lt;b&gt;INSTALLATION WITH UPDATE&lt;/b&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;In the previous scenario we saw that no update was required. Let's see what happens, if an update is required:&lt;br&gt;&lt;/p&gt;

&lt;p&gt;WudfUpdate: installing version (1,9,0,7100).&lt;br&gt;WudfUpdate: Checking for presence of previous UMDF installation.&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: UMDF installation is older than current.&lt;br&gt;WudfUpdate: Locating resource stream WUDF_UPDATE_VISTA-RTM.&lt;br&gt;WudfUpdate: unpacking update from resource to Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu.&lt;br&gt;WudfUpdate: Temporary path is D:\Windows\Temp\WDF114A.tmp.&lt;br&gt;WudfUpdate: Invoking update "%SYSTEMROOT%\system32\wusa.exe" with command line "D:\Windows\Temp\WDF114A.tmp\Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu /quiet /norestart".&lt;br&gt;WudfUpdate: Waiting for update to terminate.
WudfUpdate: Update process returned 3010.&lt;br&gt;WudfUpdate: WUDF version 1.9.0 () was installed succesfully, but requires a reboot.&lt;br&gt;WudfUpdate: Cleaning up update.&lt;br&gt;WudfUpdate: Requesting reboot to bring device online.&lt;br&gt;WudfUpdate: Installation will be restarted after reboot&amp;nbsp;&lt;/p&gt;

&lt;p&gt;In the above scenario, the coinstaller called the update package, which tried to update UMDF, however Windows Update determined that a reboot is required before the installation can continue. So, the installation stops and the user is prompted for reboot. After the reboot, the installation is restarted automatically in the background and we see the following output:&lt;/p&gt;

&lt;p&gt;WudfUpdate: installing version (1,9,0,7100).&lt;br&gt;WudfUpdate: Checking for presence of previous UMDF installation.&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.9,0.7100)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.9,0.7100)&lt;br&gt;WudfUpdate: UMDF installation is newer than update.&lt;br&gt;WudfUpdate: Loading configuration coinstaller from D:\Windows\system32\wudfcoinstaller.dll.&lt;br&gt;WudfCoInstaller: ReadWdfSection: Checking WdfSection [Echo_Install.NT.Wdf]&lt;br&gt;WudfCoInstaller: UMDF Service UMDFSkeleton is already installed - removing existing settings in preparation for setting new ones.&lt;br&gt;WudfCoInstaller: Configuring UMDF Service WUDFEchoDriver.&lt;br&gt;WudfCoInstaller: Using "Vista" service configuration&lt;br&gt;WudfCoInstaller: Service WudfSvc is already running.&lt;br&gt;WudfCoInstaller: Final status: error(0) The operation completed successfully.&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;NOTE&lt;/b&gt;&lt;/u&gt;: If the coinstaller determines that a system needs to be updated, then it will always prompt the user for reboot in the end. On the other hand, the KMDF coinstaller makes independent decisions about the reboot and the update (more information in the part that is discussing the KMDF coinstaller).&lt;br&gt;&lt;br&gt;&lt;b&gt;SCENARIO 3: UNSUCCESSFUL INSTALLATION&lt;/b&gt; &lt;/p&gt;

&lt;p&gt;&amp;nbsp;If there is an error, you will see a message that says something similar to:&lt;/p&gt;

&lt;p&gt;WudfUpdate: installing version (1,9,0,7100).&lt;br&gt;WudfUpdate: Checking for presence of previous UMDF installation.&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.5.0.6000)&lt;br&gt;WudfUpdate: UMDF installation is older than current.&lt;br&gt;WudfUpdate: Locating resource stream WUDF_UPDATE_VISTA-RTM.&lt;br&gt;WudfUpdate: unpacking update from resource to Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu.&lt;br&gt;WudfUpdate: Temporary path is D:\Windows\Temp\WDF7625.tmp.&lt;br&gt;WudfUpdate: Invoking update "%SYSTEMROOT%\system32\wusa.exe" with command line "D:\Windows\Temp\WDF7625.tmp\Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu /quiet /norestart".&lt;br&gt;WudfUpdate: Waiting for update to terminate.&lt;br&gt;WudfUpdate: Update process returned 22.&lt;br&gt;WudfUpdate: update returned error 0x16 - error(22) The device does not recognize the command.&lt;br&gt;&lt;u&gt;WudfUpdate: For additional information please look at the log files %windir%\windowsupdate.log and %windir%\Logs\CBS\CBS.log&lt;/u&gt;&lt;br&gt;WudfUpdate: Cleaning up update.&lt;br&gt;WudfUpdate: Error updating UMDF - error(22) The device does not recognize the command. Aborting installation.&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;As the message says, in order to understand the cause of the error, you can look at the files %windir%\windowsupdate.log and %windir%\logs\cbs\cbs.log. The UMDF 1.7 coinstaller incorrectly prints the 2nd log file as %windir%\cbs\logs\cbs.log, but that has been fixed in the UMDF 1.9 coinstaller. In order to find more information about how to read windowsupdate.log, you can look at &lt;a href="http://support.microsoft.com/kb/902093" mce_href="http://support.microsoft.com/kb/902093"&gt;http://support.microsoft.com/kb/902093&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In a Windows XP system, the previous line says &lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;WudfUpdate: For additional information please look at the log file %windir%\temp\wudf_update.log&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;So, either the reason of the error will be shown in setupact.log or in this file you'll find pointers about which file to look at. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;WALKTHROUGH OF UMDF COINSTALLER ACTIONS:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The UMDF coinstaller handles only the DIF_INSTALLDEVICE code and performs the following steps:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;PREDEVICE INSTALL phase&lt;/u&gt; &lt;br&gt;&lt;/p&gt;

&lt;ol&gt;&lt;/ol&gt;

&lt;p&gt;1) Check for supported OS version (XP SP2+, 2003 SP1+, Vista RTM+, 2008, Windows 7 or newer)&lt;br&gt;2) Check status of current installation:&lt;br&gt;a) Read version information for all UMDF binaries&lt;br&gt;b) If max on-disk file version &amp;gt; co-installer -&amp;gt; NO UPDATE&lt;br&gt;c) If max on-disk file version == co-installer BUT mismatched versions found (or missing files)-&amp;gt; damaged installation -&amp;gt; UPDATE&lt;br&gt;d) If all on-disk file versions == co-installer AND&amp;gt;= 1 UMDF service cannot be opened (wudfsvc, wudfrd, wudfpf) -&amp;gt; UPDATE&lt;br&gt;e) If all on-disk file versions &amp;lt; co-installer -&amp;gt; UPDATE&lt;br&gt;3) Extract MSU or update.exe package to temporary folder&lt;br&gt;4) Call MSU or update.exe package to update system&lt;br&gt;5) The update package creates marker file for the framework (e.g. %windir%\system32\drivers\MsftWdf_user_01_09_00.Wdf)&lt;br&gt;a) Possible that the update package asks for reboot, because files were marked for replacement after reboot&lt;br&gt;b) If reboot is needed, then the installation stops and will be restarted after&#xB;the reboot&lt;br&gt;6) Load the UMDF 1.9 config co-installer (%windir%\system32\wudfcoinstaller.dll)&lt;br&gt;7) Parse and validate INF (DDInstall.WDF section)&lt;br&gt;8) Create UMDF registry keys based on INF: impersonation level, kernel-mode client support, I/O dispatcher, host timeout, etc.&lt;br&gt;9) Start UMDF Device Manager (wudfsvc)&lt;br&gt;&lt;/p&gt;

&lt;p&gt;The PNP manager proceeds with installation (file copy, registry entries, etc.)&lt;/p&gt;

&lt;p&gt;&lt;u&gt;POSTDEVICE INSTALL phase&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;1) UMDF config co-installer creates marker file for the driver (e.g. %windir%\system32\drivers\Msft_User_WUDFEchoDriver_01_09_00.Wdf)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;b&gt;PART 2: KMDF&lt;/b&gt;&lt;/u&gt; &lt;/p&gt;

&lt;p&gt;First of all we need to compile the echo sample and put the following files in the same directory:&lt;/p&gt;

&lt;p&gt;Now it's time for KMDF. In order to install the KMDF you need to create a directory with the following files:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The KMDF coinstaller (%WinDDK%\%version%\redist\wdf\x86\WdfCoInstaller0100X.dll), where X is 7 or 9&lt;br&gt;&lt;/li&gt;

&lt;li&gt;The echo driver (echo.sys)&lt;/li&gt;

&lt;li&gt;The inf file (echo.inf)&lt;/li&gt;

&lt;li&gt;devcon.exe (%WinDDK%\%version%\tools\devcon\i386\devcon.exe)&lt;/li&gt;

&lt;li&gt;The
pdb file of the driver
(echo.pdb). This is
not mandatory, but it might be helpful to debug the driver.&lt;/li&gt;
&lt;/ul&gt;
In order to install the driver you can open a command prompt and type&lt;br&gt;devcon install ECHO.inf root\ECHO&lt;br&gt;&lt;br&gt;If everything goes well, you should see the following output:&lt;br&gt;&lt;br&gt;&amp;gt;devcon install echo.inf root\Echo&lt;br&gt;Device node created. Install is complete when drivers are installed...&lt;br&gt;Updating drivers for root\Echo from echo.inf.&lt;br&gt;Drivers installed successfully.&lt;br&gt;&lt;br&gt;If there's a problem, then you'll see something like:&lt;br&gt;&lt;br&gt;&amp;gt;devcon install echo.inf root\Echo&lt;br&gt;Device node created. Install is complete when drivers are installed...&lt;br&gt;Updating drivers for root\Echo from echo.inf.&lt;br&gt;devcon failed.
&lt;p&gt;The first file that you can look at foir more information regarding the installation is %windir%\setupact.log. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 1: &lt;/b&gt;&lt;b&gt;SUCCESSFUL &lt;/b&gt;&lt;b&gt;INSTALLATION WITHOUT UPDATE OR REBOOT&lt;br&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Pre-Processing&lt;br&gt;WdfCoInstaller: ReadComponents:&amp;nbsp; WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9 &lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 1.9.7100&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.9.7100&lt;br&gt;WdfCoInstaller: Service Wdf01000 is running&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Update is not required. The on-disk KMDF version is newer than or same as the version of the coinstaller&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Post-Processing&lt;br&gt;&lt;/p&gt;

&lt;p&gt;In the above scenario we see that no update was necessary, because on-disk and in-memory we have KMDF 1.9 and this version is the same as the version of the coinstaller. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 2: SUCCESSFUL INSTALLATION WITH UPDATE AND REBOOT&lt;br&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Pre-Processing &lt;br&gt;
WdfCoInstaller: ReadComponents:&amp;nbsp; WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9 &lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100&lt;br&gt;WdfCoInstaller: GetInMemoryVersionUlong: No information about in-memory KMDF version&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 0.0.0&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.5.6000&lt;br&gt;WdfCoInstaller: Service Wdf01000 is running&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Reboot is required, so that the newer KMDF version will be loaded to memory&lt;br&gt;WdfCoInstaller: VerifyMSRoot: exit: error(0) The operation completed successfully.&lt;br&gt;WdfCoInstaller: Invoking "D:\Windows\system32\wusa.exe "D:\Windows\Temp\WdfTemp\Microsoft Kernel-Mode Driver Framework Install-v1.9-Vista.msu" /quiet /norestart".&lt;br&gt;WdfCoInstaller: Update process returned error code 0 :error(0) The operation completed successfully.&lt;br&gt;WdfCoInstaller: InstallComponents: KMDF installed successfully&lt;br&gt;WdfCoInstaller: InstallComponents: Reboot needed by windows update&lt;br&gt;WdfCoInstaller: ReadComponents:&amp;nbsp; WdfSection for Driver Service Echo using KMDF lib version Major 0x1, minor 0x9 &lt;br&gt;&lt;/p&gt;

&lt;p&gt;In this scenario we see that on-disk we have KMDF 1.5, but we have no information about the in-memory version of KMDF. We implemented the functionality for the detection of the in-memory KMDF version in KMDF 1.7, so version 0.0.0 means that KMDF 1.5 (or older) is running.&lt;/p&gt;

&lt;p&gt;So, the system needs to be updated (in order to put KMDF 1.9 on the disk) and rebooted (in order to bring KMDF 1.9 in memory). &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 3: SUCCESSFUL INSTALLATION WITH REBOOT, BUT NO UPDATE&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;WdfCoInstaller: ReadComponents:&amp;nbsp; WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 1.7.6000&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.9.7100&lt;br&gt;WdfCoInstaller: Service Wdf01000 is running&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Reboot is required, because the in-memory KMDF version is older than the coinstaller's version.&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Update is not required. The on-disk KMDF version is newer than or same as the version of the coinstaller&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Here we see that on disk we have KMDF 1.9, but in memory we still have KMDF 1.7. So, we don't need to update the system, but we need to reboot (in order to bring KMDF 1.9 in memory).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;NOTE 1:&lt;/u&gt;&lt;/b&gt; &lt;u&gt;It is also possible to need to update the system (if an older version of KMDF is installed), without the need to reboot (if no KMDF driver is currently running).&lt;/u&gt; Generally, the reason for the reboot is that a KMDF driver is running and therefore we cannot replace the in-memory KMDF version without a reboot. On the other hand, the UMDF coinstaller will always prompt for reboot, if it determines that an update is required (this happens because the kernel-mode files are memory-mapped, so they can be replaced without a need for reboot, however for user-mode files the memory manage keeps an open handle to them, so they cannot be updated without a reboot).&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;NOTE 2:&lt;/u&gt;&lt;/b&gt; A big difference between UMDF and KMDF is that the UMDF installation is restarted after the reboot, whereas the &lt;u&gt;KMDF one has already finished, when the user is prompted to reboot the system. &lt;/u&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SCENARIO 4: UNSUCCESSFUL INSTALLATION WITH UPDATE AND REBOOT&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;WdfCoInstaller: ReadComponents:&amp;nbsp; WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9&amp;nbsp; &lt;br&gt;
WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 1.7.6000&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.7.6000&lt;br&gt;WdfCoInstaller: Service Wdf01000 is running&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Reboot is required, because the in-memory KMDF version is older than the coinstaller's version.&lt;br&gt;WdfCoInstaller: DIF_INSTALLDEVICE: Update is required, because the on-disk KMDF version is older than the coinstaller&lt;br&gt;WdfCoInstaller: VerifyMSRoot: exit: error(0) The operation completed successfully.&lt;br&gt;WdfCoInstaller: Invoking "D:\Windows\system32\wusa.exe "D:\Windows\Temp\WdfTemp\Microsoft Kernel-Mode Driver Framework Install-v1.9-Vista.msu" /quiet /norestart".&lt;br&gt;WdfCoInstaller: The update process returned error code :error(265) &amp;lt;no error text&amp;gt;. &lt;br&gt;&lt;u&gt;WdfCoInstaller: For additional information please look at the log files %windir%\windowsupdate.log and %windir%\Logs\CBS\CBS.log&lt;/u&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, the coinstaller points to the log files, where you can find more information regarding the reason of the failure. In Windows 2000 or XP, the underlined line would be:&lt;/p&gt;
&lt;p&gt;&lt;u&gt;WdfCoInstaller: For additional information please look at the log file &lt;/u&gt;&lt;u&gt;%windir%\Wdf01007Inst.log&lt;/u&gt; (for the KMDF 1.7 coinstaller) or&lt;/p&gt;&lt;p&gt;&lt;u&gt;WdfCoInstaller: For additional information please look at the log file &lt;/u&gt;&lt;u&gt;%windir%\Wdf01009Inst.log&lt;/u&gt; (for the KMDF 1.9 coinstaller)&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;WALKTHROUGH OF KMDF COINSTALLER ACTIONS:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The UMDF coinstaller handles only the DIF_INSTALLDEVICE code and performs the following steps:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;PHASE 1: Pre-device installation&lt;/u&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;1) Check for supported OS version (Windows 2000 or higher is supported)&lt;br&gt;2) Find KmdfLibraryVersion in INF and check if it is supported (major version has to be equal to the major version of the coinstaller)&lt;br&gt;3) Check if system needs to be updated (Vista SP1/2008 or lower)&lt;br&gt;a) On-disk version of wdf01000.sys &amp;lt; co-installer version OR&lt;br&gt;b) On-disk version of wdf01000.sys == co-installer version AND damaged installation (ARP registry entry missing OR KMDF service cannot be opened using SCM APIs)&lt;br&gt;4) Check if reboot is required:&lt;br&gt;a) KMDF service is running AND&lt;br&gt;b) KMDF in-memory &amp;lt; co-installer version
5) Extract WDFCAB_RESOURCE to temporary folder&lt;br&gt;6) Call MSU or update.exe package to update system&lt;br&gt;a) It's possible that the update package asks for reboot, because files were marked for replacement after reboot&lt;br&gt;7) Create marker file for the framework (e.g. %windir%\system32\drivers\MsftWdf_Kernel_01009_Coinstaller_Critical.Wdf)&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;PHASE 2: PNP manager&lt;/u&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;The PNP manager proceeds with the installation (file copy, registry entries, etc.)&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;PHASE 3: Post-device installation&lt;/u&gt;&lt;/p&gt;&lt;p&gt;1) If driver is marked as bootstart, then KMDF service is set to bootstart&lt;br&gt;2) Create marker file for the driver (e.g. %windir%\system32\drivers\Msft_Kernel_WdfRamdisk_01009.Wdf)&lt;br&gt;3) If reboot is required, then the PNP manager prompts the user&#xB; for reboot&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;PART 3: Additional resources&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/iliast/archive/2007/11/28/analyzing-the-installation-of-umdf-and-kmdf-1-5-drivers.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2007/11/28/analyzing-the-installation-of-umdf-and-kmdf-1-5-drivers.aspx"&gt;Analyzing the installation of UMDF and KMDF 1.5 drivers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx" mce_href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx"&gt;WinHEC 2008 presentation: Packaging, Logo, And Deployment of Windows Driver Frameworks Drivers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/iliast/archive/2009/03/18/how-to-install-wdf-drivers.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2009/03/18/how-to-install-wdf-drivers.aspx"&gt;How to install WDF Drivers (Quick-Start)&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9717811" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>How to install WDF drivers (Quick-Start)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/03/18/how-to-install-wdf-drivers.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/03/18/how-to-install-wdf-drivers.aspx</id><published>2009-03-19T00:23:00Z</published><updated>2009-03-19T00:23:00Z</updated><content type="html">&lt;p&gt;This post is a small quick-start on how to install WDF drivers.

&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Part 1: Installing a UMDF driver&lt;/b&gt;&lt;/u&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;You can start with the echo sample, which is located at %WinDDK%\6001.18002\src\umdf\echo. &lt;/p&gt;&lt;p&gt;First, you need to do a bcz in that directory. In your output directory you should see the following files:&lt;/p&gt;&lt;p&gt;1) WudfEchoDriver.dll: This is the UMDF echo driver&lt;/p&gt;&lt;p&gt;2) WudfEchoDriver.inf: This is your inf&lt;/p&gt;&lt;p&gt;3) WudfEchoDriver.pdb: This is the pdb of your driver &lt;br&gt;&lt;/p&gt;&lt;p&gt;
Copy these 3 files (the pdb is not needed actually, but it might help you in debugging) to a separate directory (e.g. c:\umdfdriver), together with:&lt;/p&gt;&lt;p&gt;4) devcon.exe: This is used to install the driver. You can find it at %WinDDK%\6001.18002\tools\devcon\&lt;arch&gt;devcon.exe
&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;5) WUDFUpdate_01007.dll: This is the coinstaller that will update your system to the correct version of UMDF You can find it at %WinDDK%\6001.18002\redist\wdf&lt;arch&gt;\WUDFUpdate_01007.dll
&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;&lt;arch&gt;
After you put all these 5 files in the same directory (make sure that the architecture for all these files matches the architecture of your system, i.e. use x86, if you have 32-bit windows, amd64 if you have 64-bit), you can install the driver by executing (from an elevated command prompt):
&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;arch&gt;&lt;arch&gt;devcon install WudfEchoDriver.inf WUDF\Echo&lt;/arch&gt;&lt;/arch&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;&lt;arch&gt;

After the installation succeeds, you can go to the device manager and see a driver with the name "Sample WUDF Echo Driver". This is your UMDF driver that is running. If you look at the task manager, you will see an application with the name wudfhost.exe running. This is the exe that loads your driver (i.e. the dll).&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;arch&gt;&lt;arch&gt;In order to test the driver, you can compile the application at %WinDDK%\6001.18002\src\kmdf\echo\exe and then run it. If you see success messages, it means that your driver is working correctly. You can look at the sources of the echo driver (possibly it might be easier for you to look at the sources of the UMDF skeleton driver, which is located at %WinDDK%\6001.18002\src\umdf\skeleton, because it is simpler) to understand how the driver is structured. &lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Part 2: Installing a KMDF driver&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Again, let's start with the echo sample, which is located at %WinDDK%\6001.18002\src\kmdf\echo\sys. &lt;/p&gt;&lt;p&gt;First, you need to do a bcz in that directory. In your output directory you should see the following files:&lt;/p&gt;&lt;p&gt;1) echo.sys: This is the KMDF echo driver&lt;/p&gt;&lt;p&gt;2) echo.inf: This is your inf&lt;/p&gt;&lt;p&gt;3) echo.pdb: This is the pdb of your driver &lt;br&gt;
&lt;/p&gt;&lt;p&gt;Copy these 3 files (the pdb is not needed actually, but it might
help you in debugging) to a separate directory (e.g. c:\kmdfdriver),
together with:&lt;/p&gt;&lt;p&gt;4) devcon.exe: This is used to install the driver. You can find it at %WinDDK%\6001.18002\tools\devcon\&lt;arch&gt;devcon.exe
&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;5) WdfCoinstaller01007.dll: This is the coinstaller
that will update your system to the correct version of KMDF You can
find it at %WinDDK%\6001.18002\redist\wdf\&lt;arch&gt;WdfCoinstaller01007.dll
&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;&lt;arch&gt;
After you put all these 5 files in the same directory (make sure that
the architecture for all these files matches the architecture of your
system, i.e. use x86, if you have 32-bit windows, amd64 if you have
64-bit), you can install the driver by executing (from an elevated
command prompt):
&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;arch&gt;&lt;arch&gt;devcon install echo.inf root\ECHO&lt;br&gt;&lt;/arch&gt;&lt;/arch&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;&lt;arch&gt;After
the installation succeeds, you can go to the device manager and see a
driver with the name "Sample WDF ECHO Driver". This is your KMDF
echo driver that is running&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;arch&gt;&lt;arch&gt;In
order to test the driver, you can use the same application as for the UMDF driver (echoapp), which is located at %WinDDK%\6001.18002\src\kmdf\echo\exe and then run it. If you see
success messages, it means that your driver is working correctly.&lt;/arch&gt;&lt;/arch&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;NOTE:&amp;nbsp;&lt;/b&gt; Since both the KMDF and UMDF echo driver as identical from echoapp's perspective, it would be good for you to have only one of the two installed, if you want to make sure that everything worked successfully.&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9488159" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>The WDF team needs your help in ensuring compatibility</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2009/02/12/the-wdf-team-needs-your-help-in-ensuring-compatibility.aspx" /><id>http://blogs.msdn.com/iliast/archive/2009/02/12/the-wdf-team-needs-your-help-in-ensuring-compatibility.aspx</id><published>2009-02-12T22:03:00Z</published><updated>2009-02-12T22:03:00Z</updated><content type="html">&lt;font face="Verdana" size="2"&gt;You might know that the Windows Driver
Framework team is working on the next version of WDF, version 1.9, and
planning to release it with Windows 7.
&lt;br&gt;
&lt;br&gt;Windows 7 will have this new version of framework built in.
However, we will also provide a redistributable coinstaller so that you
can install this framework on downlevel operating system with latest
service packs. We have added several new features to:
&lt;br&gt;
a) Further simplify driver development. &lt;br&gt;
b) Make it easier to debug &amp;amp; diagnose failures during development and also in the field after deployment.
&lt;br&gt;
c) Reduce CPU utilization and memory footprint. &lt;br&gt;
d) Enable the use of the framework in certain new technologies. &lt;br&gt;
e) Fixed numerous bugs to harden the framework to handle edge conditions - in particular run down scenarios.
&lt;br&gt;
&lt;br&gt;So we have put in lot of effort to make driver and driver writing
experience better. The presentation "What's new in WDF 1.9" that we
gave in WinHEC 2008 (&lt;/font&gt;&lt;a href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2fE%2f6%2f5E66B27B-988B-4F50-AF3A-C2FF1E62180F%2fCOR-T546_WH08.pptx" mce_href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2fE%2f6%2f5E66B27B-988B-4F50-AF3A-C2FF1E62180F%2fCOR-T546_WH08.pptx" class="x_WNAnc" target="_blank"&gt;&lt;font face="Verdana" size="2"&gt;http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T546_WH08.pptx&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;)
 has more details on the work we did. &lt;br&gt;
&lt;br&gt;&lt;b&gt;
How can you help us? &lt;/b&gt;&lt;br&gt;
&lt;br&gt;
Based on our telemetry, we know there is a large number (over 1000) of
framework drivers of all versions (1.1, 1.5, 1.7) written and released
to
public. In order to make sure that these drivers continue to work
on Windows 7, and even on downlevel OSes - if a new device brings in
the latest
framework - we request you to test your drivers with framework version
1.9 and make sure it's fully functional. We have put an extraordinary
effort to maintain compatibility but when you have such a large
eco-system, we will not be able to cover every possible scenario.
&lt;br&gt;
&lt;br&gt;We made a very successful transition from 1.5 to 1.7 with
absolutely no compatibility issues and we would like to ensure that we
repeat that success and keep you all happy.
&lt;br&gt;
&lt;br&gt;So please take some time and try out the new version. You can get
the 1.9 version from Windows 7 beta WDK. Information on how to get the
WDK is given on this page
&lt;/font&gt;&lt;a href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=http%3a%2f%2fwww.microsoft.com%2fwhdc%2fDevTools%2fWDK%2fWDKbeta.mspx" mce_href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=http%3a%2f%2fwww.microsoft.com%2fwhdc%2fDevTools%2fWDK%2fWDKbeta.mspx" class="x_WNAnc" target="_blank"&gt;&lt;font face="Verdana" size="2"&gt;http://www.microsoft.com/whdc/DevTools/WDK/WDKbeta.mspx&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.
&lt;br&gt;
&lt;br&gt;We are also putting together a small lab with some devices to do
compatibility testing on our own. We are in need of more devices that
use
framework drivers. So if you have released a device that we can
buy from a store and use it in our lab, please send me the description.
&lt;br&gt;
&lt;br&gt;
You can post your feedback here or email to (&lt;a href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=mailto%3awdfinfo%40discussion.microsoft.com" mce_href="https://mail.microsoft.com/OWA/redir.aspx?C=ccd43f379eea444faee3e136d5ee4b61&amp;amp;URL=mailto%3awdfinfo%40discussion.microsoft.com"&gt;wdfinfo@discussion.microsoft.com&lt;/a&gt;). Remove the word 'discussion' from the email
address. &lt;br&gt;
&lt;br&gt;
Thank you,&amp;nbsp;&lt;br&gt;
On behalf of the WDF team - Microsoft&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9415479" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>WinHEC 2008 Presentations</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/11/21/winhec-2008-presentations.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/11/21/winhec-2008-presentations.aspx</id><published>2008-11-22T04:28:00Z</published><updated>2008-11-22T04:28:00Z</updated><content type="html">As many of you know, &lt;a href="http://www.microsoft.com/whdc/winhec/default.mspx" mce_href="http://www.microsoft.com/whdc/winhec/default.mspx"&gt;WinHEC 2008&lt;/a&gt; took place in Los Angeles, at the beginning of this month. I gave a presentation in the conference with&lt;a href="http://blogs.msdn.com/bobkjelgaard/" mce_href="http://blogs.msdn.com/bobkjelgaard/"&gt; Bob Kjelgaard&lt;/a&gt; about the WDF coinstallers and WDF logo requirements. This presentation includes a step-by-step walkthrough of the execution of the coinstallers, their contents, the methodology that we are using in order to debug WDF installation failures, as well as the tests that WDF drivers need to pass, in order to be logo-ed. This presentation can be found &lt;a href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx" mce_href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx"&gt;here&lt;/a&gt;. The list with all the presentations in WinHEC 2008 can be found &lt;a href="http://www.microsoft.com/whdc/winhec/2008/pres.mspx" mce_href="http://www.microsoft.com/whdc/winhec/2008/pres.mspx"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9132483" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry><entry><title>Where are the WDF 1.7 RTM coinstallers?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/10/02/where-are-the-wdf-1-7-rtm-coinstallers.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/10/02/where-are-the-wdf-1-7-rtm-coinstallers.aspx</id><published>2008-10-02T23:28:00Z</published><updated>2008-10-02T23:28:00Z</updated><content type="html">&lt;p&gt;&lt;u&gt;&lt;b&gt;UPDATE (10/31/2008)&lt;/b&gt;&lt;/u&gt;:&amp;nbsp; We just released the Windows Server 2008/SP1 WDK, which includes the coinstallers. This WDK is versioned as 6001.18002 and can be found &lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&amp;amp;DownloadID=14650" mce_href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&amp;amp;DownloadID=14650"&gt;here&lt;/a&gt;. Apart from the coinstallers, this WDK also has some additional changes, which are described &lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=148" mce_href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=148"&gt;here&lt;/a&gt;. The rest of the post has instructions on how to download the 6001.18001 WDK (i.e. the previous version of the WDK). We strongly suggest that you download version 6001.18002. If you do so, then you don't need to download the coinstallers from the seperate msi.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;It still puzzles me that we continue to get emails from people, who cannot find either the latest WDK or the WDF 1.7 coinstallers.&lt;/p&gt;&lt;p&gt;So, just for completeness the steps are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Go to &lt;a href="https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=148" mce_href="https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=148"&gt;https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=148&lt;/a&gt; (if you have problems signing in using Firefox, then try Internet Explorer)&lt;br&gt;&lt;/li&gt;&lt;li&gt;Login with your Microsoft Passport or your Windows Live ID. If you don't have one, then you need to create one for free.&lt;br&gt;&lt;/li&gt;&lt;li&gt;After you login, you'll see a page which has a link for "&lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&amp;amp;DownloadID=11295" mce_href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&amp;amp;DownloadID=11295"&gt;WDK for Server 2008&lt;/a&gt;" (this is the WDK versioned as 6001.18001 and&lt;b&gt;&lt;u&gt; IT DOES NOT HAVE THE WDF 1.7 coinstallers&lt;/u&gt;&lt;/b&gt;) and a link for "&lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&amp;amp;DownloadID=11680"&gt;WDF (KMDF and UMDF) 1_7&lt;/a&gt;" (the WDF 1.7 coinstallers). You can download just either the coinstallers or both packages, depending on whether you need just to use the redistributable or if you need to develop new drivers.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;The coinstallers have been there since 18th April 2008.&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8974363" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author></entry><entry><title>A study guide for KMDF, UMDF, and Windows device driver concepts </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/09/28/a-study-guide-for-kmdf-umdf-and-windows-device-driver-concepts.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/09/28/a-study-guide-for-kmdf-umdf-and-windows-device-driver-concepts.aspx</id><published>2008-09-28T11:33:00Z</published><updated>2008-09-28T11:33:00Z</updated><content type="html">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 &lt;a href="http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/WDFSyllabus2008.docx" mce_href="http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/WDFSyllabus2008.docx"&gt;here&lt;/a&gt;. I think that this self-study guide is really helpful and covers the important points that a driver developer should be accustomed with.&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8967934" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="Drivers (General)" scheme="http://blogs.msdn.com/iliast/archive/tags/Drivers+_2800_General_2900_/default.aspx" /><category term="Books" scheme="http://blogs.msdn.com/iliast/archive/tags/Books/default.aspx" /></entry><entry><title>Driver Developer Conference - DDC 2008</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/09/25/driver-developer-conference-ddc-2008.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/09/25/driver-developer-conference-ddc-2008.aspx</id><published>2008-09-26T08:26:00Z</published><updated>2008-09-26T08:26:00Z</updated><content type="html">Next week (9/29 - 10/1) we'll have the &lt;a href="http://www.microsoft.com/whdc/491F34B0-E3D0-D1B1-0667-D4065525389C/default.mspx" mce_href="http://www.microsoft.com/whdc/491F34B0-E3D0-D1B1-0667-D4065525389C/default.mspx"&gt;Microsoft Windows Driver Developer Conference (DDC)&lt;/a&gt; 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, &lt;a href="http://blogs.msdn.com/bobkjelgaard/" mce_href="http://blogs.msdn.com/bobkjelgaard/"&gt;Bob Kjelgaard&lt;/a&gt; and I are giving a talk titled "Packaging and Deploying KMDF and UMDF drivers". Actually, a better name for the talk would be "Everything technical that you ever wanted to know about the WDF coinstallers and were afraid to ask" (yes, I actually requested to have this title, however it didn't go through :) ). I think that right now the information that's externally available for the coinstallers is pretty limited. Actually, apart from the fact that "they are coinstallers and you need to have them with all your WDF drivers" and a few posts that Bob and I have written, I don't think that anything else is known about them. In our talk we'll try to show lots of light into this part of WDF.&lt;p&gt;The last several days we've been practising our talk and I'm pretty happy about it. There is enough technical information in the talk to explain all the common questions that people have and also there will be enough time in the end to answer all sorts of questions that might arise from the presentation. Also, we'll both be available to answer questions in the "Ask The Experts" session, in the panel discussion for WDF and of course we'll be talking to customers and partners in the corridors and in the halls, in order to answer the questions that they might have. I've been teasing Bob by telling him that I'll forward all the hard questions to him, however I've been really happy to work with Bob for such a long time. He's definately a really technical person and he's explaining all these advanced techniques of testing different parts of the framework that blow me away :)&lt;/p&gt;&lt;p&gt;Apart from our talk, there will be a series of presentations for WDF. I've actually sat through all the dry runs of the talks and I think that we have excellent material to present (yes, I know that it's kind of weird to praise the team that I'm part of, but I really believe it). I won't try to write down all the WDF presentations, however you can look at the &lt;a href="http://download.microsoft.com/download/2/9/e/29edfd7f-2ad8-480f-b06e-7aba65f8b029/DDC_2008_Agenda.xlsx" mce_href="http://download.microsoft.com/download/2/9/e/29edfd7f-2ad8-480f-b06e-7aba65f8b029/DDC_2008_Agenda.xlsx"&gt;agenda&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/whdc/491F34B0-E3D0-D1B1-0667-D4065525389C/sessions.aspx" mce_href="http://www.microsoft.com/whdc/491F34B0-E3D0-D1B1-0667-D4065525389C/sessions.aspx"&gt;descriptions&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So, for those of you, who are coming to DDC and are interested in the WDF coinstallers, please come with all your questions and we'll be happy to answer them as best as we can! &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8965981" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="Drivers (General)" scheme="http://blogs.msdn.com/iliast/archive/tags/Drivers+_2800_General_2900_/default.aspx" /><category term="Windows" scheme="http://blogs.msdn.com/iliast/archive/tags/Windows/default.aspx" /></entry><entry><title>Channel9 Video on Debugging BSODs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/09/14/channel9-video-on-debugging-bsods.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/09/14/channel9-video-on-debugging-bsods.aspx</id><published>2008-09-14T22:33:00Z</published><updated>2008-09-14T22:33:00Z</updated><content type="html">&lt;p&gt;I found a very interesting channel9 video on how to debug BSODs (Blue Screens of Death): &lt;a href="http://channel9.msdn.com/posts/Dan/Daniel-Pearson-Debugging-a-Windows-Blue-Screen-of-Death/" mce_href="http://channel9.msdn.com/posts/Dan/Daniel-Pearson-Debugging-a-Windows-Blue-Screen-of-Death/"&gt;http://channel9.msdn.com/posts/Dan/Daniel-Pearson-Debugging-a-Windows-Blue-Screen-of-Death/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;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 a neat trick with notepad :)&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8951853" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="Debugging" scheme="http://blogs.msdn.com/iliast/archive/tags/Debugging/default.aspx" /><category term="windbg" scheme="http://blogs.msdn.com/iliast/archive/tags/windbg/default.aspx" /><category term="Drivers (General)" scheme="http://blogs.msdn.com/iliast/archive/tags/Drivers+_2800_General_2900_/default.aspx" /></entry><entry><title>Code Quality: Windows vs Linux vs FreeBSD vs Solaris</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/05/16/code-quality-windows-vs-linux-vs-freebsd-vs-solaris.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/05/16/code-quality-windows-vs-linux-vs-freebsd-vs-solaris.aspx</id><published>2008-05-17T06:06:00Z</published><updated>2008-05-17T06:06:00Z</updated><content type="html">
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.spinellis.gr/" mce_href="http://www.spinellis.gr/"&gt;Diomidis
Spinellis&lt;/a&gt; has written a good paper for the &lt;a href="http://www.icse-conferences.org/" mce_href="http://www.icse-conferences.org/"&gt;“30&lt;sup&gt;th&lt;/sup&gt; International Conference on Software
Engineering” (ICSE ’08)&lt;/a&gt; that looks at the code quality of the source codes of Windows (WRK –
Research Kernel based on Windows Server 2003), Linux, Solaris and FreeBSD.
Diomidis has analyzed the source codes of these 4 kernels and uses some code
metrics, in order to measure the quality of each kernel in each area.&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;For those, who don’t like reading lengthy texts, a summary
of the results is at the end (section 5: summary and discussion). Each operating system has its own strengths and weaknesses, so there is no clear winner.&lt;br&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;The paper can be found at &lt;a href="http://www.spinellis.gr/pubs/conf/2008-ICSE-4kernel/html/Spi08b.pdf"&gt;http://www.spinellis.gr/pubs/conf/2008-ICSE-4kernel/html/Spi08b.pdf&lt;/a&gt;
and all the queries for the code analysis can be found at &lt;a href="http://www.spinellis.gr/sw/4kernel/"&gt;http://www.spinellis.gr/sw/4kernel/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Finally, Diomidis has a very lengthy list of &lt;a href="http://www.spinellis.gr/bib/index.htm" mce_href="http://www.spinellis.gr/bib/index.htm"&gt;classic reads&lt;/a&gt; at his website.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8516397" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="Linux" scheme="http://blogs.msdn.com/iliast/archive/tags/Linux/default.aspx" /><category term="Windows" scheme="http://blogs.msdn.com/iliast/archive/tags/Windows/default.aspx" /></entry><entry><title>When Is WDF 1.7 RTM Coming Out?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/iliast/archive/2008/04/03/when-is-wdf-1-7-rtm-coming-out.aspx" /><id>http://blogs.msdn.com/iliast/archive/2008/04/03/when-is-wdf-1-7-rtm-coming-out.aspx</id><published>2008-04-04T05:12:00Z</published><updated>2008-04-04T05:12:00Z</updated><content type="html">&lt;p&gt;&lt;b&gt;&lt;u&gt;UPDATE 10/02/2008&lt;/u&gt;:&lt;/b&gt; The WDF 1.7 RTM coinstallers were released on 4/18/2008. For more information on how to download them, please look at &lt;a href="http://blogs.msdn.com/iliast/archive/2008/10/02/where-are-the-wdf-1-7-rtm-coinstallers.aspx" mce_href="http://blogs.msdn.com/iliast/archive/2008/10/02/where-are-the-wdf-1-7-rtm-coinstallers.aspx"&gt;http://blogs.msdn.com/iliast/archive/2008/10/02/where-are-the-wdf-1-7-rtm-coinstallers.aspx&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Lately, I've been hearing the same question over and over: Where is the WDF 1.7 RTM? Many driver developers have gone to the &lt;a href="https://connect.microsoft.com" mce_href="https://connect.microsoft.com"&gt;onConnect website&lt;/a&gt; and there they see the following notice:&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: Symbol;"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;**URGENT**&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif';"&gt; - WDK WS08 - WDF ALERT&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: Symbol;"&gt;&lt;span&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;WDF Users&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;:&amp;nbsp;
Two patches from Windows Update (KB 938371 &amp;amp; KB 933607) interfere
with installation of the Kernel Mode Driver Framework and the User Mode
Driver Framework on Windows Vista.&amp;nbsp;&amp;nbsp; Testing of the fixes is in
progress.&amp;nbsp; Our current estimate to complete these fixes is the end of
March.&amp;nbsp; Until then, we ask that you not release device drivers using
either KMDF or UMDF version 1.7.&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;For further information, contact &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 13.5pt; color: black; font-family: 'Verdana','sans-serif';"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;&lt;a href="mailto:WDFINFO@microsoft.com"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;WDFINFO@microsoft.com&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt; color: red; font-family: 'Verdana','sans-serif';"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="4"&gt;Sincerely,&lt;br&gt;KMDF Team&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Of course, the end of March has passed and right now we're in April. So, what has happened? Let's start from the beginning.&lt;/p&gt;&lt;p&gt;First of all, I'll say that we had tested all WDF binaries and coinstallers and we were ready to ship with the 6001.18000 RTM WDK (i.e. the Windows Server 2008 WDK). Everybody was happy in the team, since we were on time and we were eagerly working on the new WDF version. Finally, the WDK went out and we had a mini-party :)&lt;/p&gt;&lt;p&gt;A few days after the release of the WDK I received a couple of emails saying that there is a problem with the KMDF 1.7 coinstaller: it cannot update a system, where KMDF 1.5 was already installed. Of course, this was a scenario that we had already tested (many times and using multiple configurations and test scenarios) and it seemed weird at first. However, the log files that I got were not lying: the files were not being updated. In the beginning, it was hard to believe that such a fundamental scenario was not working and it was even harder to convince other people in my team that there was a potential problem. Anyway, after some tests we found out that even in our machines (which we were using to test the KMDF 1.7 coinstallers), the coinstallers were not working!&lt;/p&gt;&lt;p&gt;So, while brainstorming with the WDF test lead, Shefali, she told me that the KMDF 1.5 binaries were part of the KB938371, which is a prerequisite for Vista SP1. Up to that moment I had no idea about the existence of this package. Anyway, indeed we verified that this package was creating a versioning conflict with the coinstaller and it was preventing the coinstaller from working correctly. All this happened within a couple of days, after we received the initial emails that were informing us about the installation failure. Immediately we informed people about workarounds on this issue. You can find the initial announcement that I made in OSR's ntdev mailing list &lt;a href="http://www.osronline.com/showThread.CFM?link=126247" mce_href="http://www.osronline.com/showThread.CFM?link=126247"&gt;here&lt;/a&gt;. The workaround for testing purposes (which can also be found in the above link) is to &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/03/04/why-doesn-t-my-kmdf-1-7-driver-install-on-windows-vista.aspx" mce_href="http://blogs.msdn.com/bobkjelgaard/archive/2008/03/04/why-doesn-t-my-kmdf-1-7-driver-install-on-windows-vista.aspx"&gt;extract the files from the coinstallers and manually place them to their directory&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;&lt;p&gt;After that, we had to take the hit, remove the 6001.18000 WDK from the onConnect website and post the 6001.18001 WDK, which is exactly the same as the previous one, however it doesn't have the WDF coinstallers. Around that time, while searching for the best solution, we found (again, while brainstorming with Shefali) that there was an issue with the package of the UMDF coinstaller: it would not upgrade a small number of Windows Vista users. So, we created new coinstallers and started testing them. The code is EXACTLY the same as the one coinstaller that we had released in the 6001.18000 WDK, but we had to modify the update packages that are inside the coinstaller. Of course, right now our testing scenarios are checking everything, since we want to make sure that we're controlling all the unknown factors and there are no more suprises in the corner for us. Fortunately, testing is going well and we haven't found any issues. AFAIK, we're almost done testing the coinstallers and the only thing that remains is to find a way to re-release them. Our PM, Jeff, is currently working on this issue.&lt;/p&gt;&lt;p&gt;So, when are is WDF 1.7 coming out? We're doing our best. Most probably, if everything goes well, sometime in April. The whole issue has been as disturbing for you as it has for us and we want to overcome it asap. &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8355529" width="1" height="1"&gt;</content><author><name>iliast</name><uri>http://blogs.msdn.com/members/iliast.aspx</uri></author><category term="UMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/UMDF/default.aspx" /><category term="KMDF" scheme="http://blogs.msdn.com/iliast/archive/tags/KMDF/default.aspx" /><category term="WDF" scheme="http://blogs.msdn.com/iliast/archive/tags/WDF/default.aspx" /></entry></feed>