<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Trouble Ahead- Trouble Behind : UMDF</title><link>http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx</link><description>Tags: UMDF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>New WDF debugging videos on WHDC</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2009/09/22/9898002.aspx</link><pubDate>Tue, 22 Sep 2009 16:41:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898002</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9898002.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9898002</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9898002</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/kmdf.mspx" target="_blank"&gt;Several for KMDF here&lt;/a&gt;, and &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/umdftraining.mspx" target="_blank"&gt;several more for UMDF here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thus endeth today’s PR blitzen.&amp;#160; Have fun!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898002" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/debugging/default.aspx">debugging</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category></item><item><title>2008 DDC slides now available to all!</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2009/07/22/2008-ddc-slides-now-available-to-all.aspx</link><pubDate>Wed, 22 Jul 2009 14:24:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9844701</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9844701.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9844701</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9844701</wfw:comment><description>&lt;p&gt;Got an email late last week stating that the material I and others presented at the 2008 Driver Developers Conference (which Dieter and James want renamed to Driver Development and Test Conference- more power to that idea!) is now available &lt;a href="http://www.microsoft.com/whdc/resources/ddc/default.mspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The sessions I participated in are a &lt;a href="http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DDE-T689_DDC08.pptx" target="_blank"&gt;description of several WDF test technologies&lt;/a&gt; and some hand waving about &lt;a href="http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DDE-T687_DDC08.pptx" target="_blank"&gt;troubleshooting WDF installation problems&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you are a tester, you might also want to take a look at James and Dieter’s &lt;a href="http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DDE-T673_DDC08.pptx" target="_blank"&gt;presentation on concurrency testing&lt;/a&gt;, and who wouldn’t want to know about the &lt;a href="http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DDE-T677_DDC08.pptx" target="_blank"&gt;new Driver Verifier features for Win7&lt;/a&gt; (ably presented by Daniel Mihai)?&amp;#160; I also recommend the &lt;a href="http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DDE-C679_DDC08.pptx" target="_blank"&gt;presentation on DSF&lt;/a&gt;, because in many ways I live and die by DSF.&lt;/p&gt;  &lt;p&gt;That would be “Device Simulation Framework” if the acronym is unknown to you.&amp;#160; Sooner or later, having an easily reproduced software simulator for a device trumps going to EBay to buy some long out-of-production hardware your test driver must have…&amp;#160; That’s just one reason I like it, but that’s all I have time for now…&lt;/p&gt;  &lt;p&gt;There’s more- but that’s why it’s called a “browser”, eh?&amp;#160; By all means, browse!&lt;/p&gt;  &lt;p&gt;As for why it took so long to make public- remember this conference occurred under non-disclosure agreements.&amp;#160; Takes some time to unravel things and get all the requisite hoops jumped through.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9844701" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/DSF/default.aspx">DSF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Driver+Verifier/default.aspx">Driver Verifier</category></item><item><title>He’s Gone</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2009/06/25/he-s-gone.aspx</link><pubDate>Fri, 26 Jun 2009 05:15:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9804623</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9804623.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9804623</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9804623</wfw:comment><description>&lt;p&gt;It has been a tough week, and a busy one.&amp;#160; I’m getting ready to leave on a vacation, and trying to get all those last-minute things done.&amp;#160; &lt;/p&gt;  &lt;p&gt;While &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2009/06/18/crazy-is-as-crazy-does.aspx"&gt;my last post&lt;/a&gt; discussed the genesis of what I call the Configuration Agent and the WDF QA Universal Setup Job, this week’s focus has been entirely on another of my oddball notions- it started as a desire to build a &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/11/12/adaptive-fault-injection.aspx"&gt;more precise fault injection engine&lt;/a&gt; for testing the KMDF loader.&amp;#160; With that California background, the project name was easy- Fault?&amp;#160; Why, San Andreas, of course!&amp;#160; &lt;/p&gt;  &lt;p&gt;At a high level it was a programming model built around IAT filtering of calls from a driver into the kernel.&amp;#160; I wanted precision, so I could specify behavior by thread and IRQL, program each DDI independently, allow a driver to do its own filtering [i.e. get a callback with context for a DDI call under given conditions]- and with enough flexibility and locking behavior that the behavior could be reprogrammed within such a callback. For instance, in one working application of mine a filter on calls to &lt;em&gt;IoCallDriver&lt;/em&gt; from the KMDF runtime were routed on specific threads to a callback in the test driver which then turned off all call logging, as it meant the call was leaving it’s stack location- I was using the logs from calls to various resource allocation DDI to make sure the framework did not allocate resources under conditions in which we contractually would not fail- so I wanted to stop logging before I called IoCallDriver and to restart it after it returned [I knew the driver handling it was synchronous- otherwise I would have to hook the completion side of things, of course].&lt;/p&gt;  &lt;p&gt;So the concept went well beyond fault injection, but it’s always been a side-line.&amp;#160; My initial tests wound up being very white box, and a refactoring of the loader code&amp;#160; meant a similar rewrite of the test was necessary, but there was no time to do that…&amp;#160; But with Windows 7 winding up [since we’ve announced dates, that can’t qualify as a secret anymore], I have time to go back and try to at least do a few new things beyond mere maintenance.&amp;#160; Such time is rare and fleeting, so I’ve been busily making the most of it.&lt;/p&gt;  &lt;p&gt;So today was busy- I worked a bit of overtime on a COM automation server (in process) exposing a scriptable interface to my engine for some of the other team members to use, and got it at least working well enough to demo.&amp;#160; Still have my packing to do, and dinner to make and so forth, so home I headed.&lt;/p&gt;  &lt;p&gt;Then I turned on the television, and immediately heard the news about Michael Jackson.&amp;#160; Whoa…&lt;/p&gt;  &lt;p&gt;On those old tapes I’ve been scraping &lt;a href="http://bobkjelgaard.members.winisp.net/bob-audio.htm"&gt;for my archives&lt;/a&gt; I’ve got many covers of his material from the time I was playing in bar bands: Billie Jean, Thriller, Beat It- and more.&amp;#160; I’ve not posted them because frankly I never thought I did any of them justice- a lot of my material from those days has rough edges [anyone who listens to what I have posted can hear that], but these were just not good enough.&amp;#160; But add me to the billions of fans, then and since, sure…&lt;/p&gt;  &lt;p&gt;The other thought that came early on was that in my previous post I mentioned having learned to keep some of my more controversial opinions to myself- one of those was intense skepticism about the molestation accusations.&amp;#160; I knew I wasn’t likely to sway anyone there- so why bother?&lt;/p&gt;  &lt;p&gt;He’s gone, and he was younger than I am- scary stuff.&amp;#160; Life is fleeting, and it was an unexpected reminder of that.&lt;/p&gt;  &lt;p&gt;But, it’s time to pack my CDs and games and controllers, write those last few checks for bills coming due during the vacation. eat that dinner, and get ready for a night’s rest prior to that final day of work, so another slapdash post, and back to work…&lt;/p&gt;  &lt;p&gt;There was some offsetting good news today- besides finding out I really do still remember enough about COM to roll out an in-process automation server on the QT- without using ATL of course, where would the challenge be in that [answer: in learning something new for a change- you old dog!]?&amp;#160; But of course it falls into that semi-confidential area where I’ll just have to sit on it for a while [not that it’s likely to shatter the world if revealed anyway, but circumspection is worthy of practice even for an old blowhard like myself].&lt;/p&gt;  &lt;p&gt;I’ll try to do something more substantial someday- these days I’ve just not got the time to really write anything too terribly technical.&amp;#160; My apologies to those diehards who still try to read this awful stuff I’m churning out of late…&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9804623" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item><item><title>WinHEC Presentations you might want to view</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/11/19/winhec-presentations-you-might-want-to-view.aspx</link><pubDate>Thu, 20 Nov 2008 00:01:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9125944</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9125944.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9125944</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9125944</wfw:comment><description>&lt;p&gt;Since &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/11/18/queue-callbacks-are-not-dispatch-routines.aspx#9125461" target="_blank"&gt;I was asked&lt;/a&gt; in response to &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/11/18/queue-callbacks-are-not-dispatch-routines.aspx" target="_blank"&gt;my previous post&lt;/a&gt; &amp;quot;so what else is new in WDF?&amp;quot;, how about &lt;a href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T546_WH08.pptx" target="_blank"&gt;this link&lt;/a&gt; to the presentation Eliyas and &lt;a href="http://blogs.msdn.com/peterwie" target="_blank"&gt;Peter&lt;/a&gt; made on exactly that topic at this year's &lt;a href="http://microsoft.com/whdc/winhec/default.mspx" target="_blank"&gt;WinHEC&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;I suppose I could also flog &lt;a href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T593_WH08.pptx" target="_blank"&gt;this link&lt;/a&gt; to the presentation &lt;a href="http://blogs.msdn.com/iliast" target="_blank"&gt;Ilias&lt;/a&gt; and I made [but it's not quite so broadly of interest- WDF coinstallers and introduction to WDF logo requirements and tests].&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now Playing: Turning Point (a bar band I played in during the 80's)- The Other Woman (ahh, I could play a decent bass once in a while, back in the day)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Which reminds me, I've put that one up &lt;a href="http://www.bobkjelgaard.members.winisp.net/The%20Other%20Woman.wma" target="_blank"&gt;here&lt;/a&gt; (about 2 MB WMA) if you really want to hear it yourself.&amp;#160; I've put up a smattering of others available from &lt;a href="http://bobkjelgaard.members.winisp.net/bob-audio.htm" target="_blank"&gt;this page&lt;/a&gt;(including a few after I switched to lead guitar and vocals)...&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now Playing: Grateful Dead- Europe '72- Sugar Magnolia&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9125944" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/lifestyle/default.aspx">lifestyle</category></item><item><title>Determining WDF runtime and client versions</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/11/05/determining-wdf-runtime-and-client-versions.aspx</link><pubDate>Wed, 05 Nov 2008 17:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9044339</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9044339.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9044339</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9044339</wfw:comment><description>&lt;P&gt;What a long, strange trip, it was, getting to WinHEC!&amp;nbsp; I waited for a shuttle to the airport at my apartment, and the rain [which was fairly heavy] turned into hail!&amp;nbsp; But by the time we got near the airport, everything was dry.&lt;/P&gt;
&lt;P&gt;Well, LA is probably still LA (I lived in El Segundo for about a year 6 years ago, and of course went to school in Pasadena, so I'm not a total loss], so that's enough travelogue.&lt;/P&gt;
&lt;H2&gt;UMDF&lt;/H2&gt;
&lt;P&gt;Easy- &lt;A href="http://blogs.msdn.com/peterwie" target=_blank mce_href="http://blogs.msdn.com/peterwie"&gt;Peter&lt;/A&gt; and his team obviously planned ahead.&amp;nbsp; There is an exported data item linked into each driver and in one of the framework binaries.&amp;nbsp; So LoadLibrary and GetProcAddress, and you're there.&amp;nbsp; The data is three ULONGs [IIRC, as I'm not about to carry Windows source on my laptop to WinHEC without a better reason than a desire to blog]- major version, minor version and "SP level".&lt;/P&gt;
&lt;H2&gt;KMDF runtime&lt;/H2&gt;
&lt;P&gt;I won't say &lt;A href="http://blogs.msdn.com/doronh" target=_blank mce_href="http://blogs.msdn.com/doronh"&gt;Doron&lt;/A&gt; and his peers didn't plan ahead- I believe it was more a case of having more important problems to solve at the time...&amp;nbsp; But I did mention it, so I might as well face it.&lt;/P&gt;
&lt;P&gt;Again, I'm going to have revisit a few details again, later.&amp;nbsp; This is my recollection [and it will be pretty close]:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;KMDF 1.0 had nothing to identify it.&lt;/LI&gt;
&lt;LI&gt;KMDF 1.1 and 1.5 have a resource in the disk file that identifies major version, minor version, and build number, similar to the UMDF version info described above.&amp;nbsp; LoadLibraryEx (as datafile) and the usual FindResource, etc. route.&lt;/LI&gt;
&lt;LI&gt;As part of our installation improvements in KMDF 1.7, the runtime now also records its version in the registry under its software key when it is loaded, and removes it when it unloads.&amp;nbsp; That's why the WdfVerifier image I showed &lt;A href="http://blogs.msdn.com/bobkjelgaard/archive/2008/10/30/new-in-wdfverifier-the-tweaks-and-fixes.aspx" target=_blank mce_href="http://blogs.msdn.com/bobkjelgaard/archive/2008/10/30/new-in-wdfverifier-the-tweaks-and-fixes.aspx"&gt;here&lt;/A&gt; said "In Memory".&amp;nbsp; I like this because it also works remotely (and I'm not going to inspect binaries remotely).&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, I first look for an in-memory version, as that is the most reliable.&amp;nbsp; If I am remote, then the only other thing I can do is look at the registered OS version information.&amp;nbsp; If it is Windows Vista, I assume it must be KMDF 1.5 [because 1.7 would tell me it is in memory, as Vista has running inbox KMDF drivers]- the message indicates this, although how I say it is by inference escapes me.&amp;nbsp; Otherwise, it is 1.5 or below, but I can't tell- I don't remember the message, but I do hope I changed it from my original "Can't tell- you tell me!".&lt;/P&gt;
&lt;P&gt;If it is local, then when I first scan all driver binaries, I pick out the runtime, and examine the version information just as I describe above.&lt;/P&gt;
&lt;H2&gt;KMDF client&lt;/H2&gt;
&lt;P&gt;This is the fun one for me, so I'm going to save it for a later post- it's time to get dressed and find that shuttle to the convention center, so I can spend a day in WinHEC [oh, the pun potential for that one...].&lt;/P&gt;
&lt;P&gt;No tunes today- wonder if the WDK folks I now sit amongst are enjoying time away from the endless noise emanating from my environs!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9044339" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category></item><item><title>They're here!</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/10/31/they-re-here.aspx</link><pubDate>Fri, 31 Oct 2008 20:24:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9026986</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9026986.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9026986</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9026986</wfw:comment><description>&lt;p&gt;For some of you, this may be old news, but it appears the 1.7 WDF coinstallers are finally back in the downloadable WDK (I just got my notification from Microsoft Connect much as others registered for the release program presumably did).&lt;/p&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=148" target="_blank"&gt;This would be the link to the download site [if you've signed up for Connect]&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Lifted directly from said notice:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;&lt;font color="#000000"&gt;Here are few highlights in this release:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;   &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;New Setup Environment&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;Updates/fixes to Headers&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;Added Bluetooth 2.1 headers and samples&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;Added support for Server 2008 to DifX&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;Updated WDF 1.7 co-installers&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;Updated Device Simulation Framework (DSF)&lt;/span&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li style="margin: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="font-family: " verdana","sans-serif"; FONT-SIZE: 10pt"&gt;&lt;font color="#000000"&gt;Updated Debugger&lt;/font&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9026986" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category></item><item><title>New in WdfVerifier- the tweaks and fixes</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/10/30/new-in-wdfverifier-the-tweaks-and-fixes.aspx</link><pubDate>Thu, 30 Oct 2008 21:24:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9024986</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/9024986.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=9024986</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=9024986</wfw:comment><description>&lt;p&gt;Now that the PDC is underway, and WinHEC is nigh, I'm going to provide a quick peek at changes coming to the WdfVerifier tool (these will be in the Windows 7 Beta WDK, which isn't far away, but obviously I still can't say more than that).&lt;/p&gt;  &lt;h2&gt;Doh!&lt;/h2&gt;  &lt;p&gt;First off, fixes for a few of the usual boneheaded bugs (please note these were my bugs, not bugs in the underlying KMDF or UMDF code):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Handle Tracking settings for KMDF were being managed in an incorrectly named value.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/01/31/so-nice-i-tried-it-twice.aspx" target="_blank"&gt;Paths to UMDF debugger with spaces in them weren't handled properly&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Any attempt to change UMDF host process restart limit set it to the maximum value (one of those last minute changes that slipped past an ad-hoc test procedure).&lt;/li&gt;    &lt;li&gt;The thread that handles UMDF auto-launch never idled.&amp;#160; Didn't think it mattered, as it was normal priority, but it sucks laptop batteries down fast when it doesn't.&lt;/li&gt;    &lt;li&gt;There was a reference counting error in my object management code- if you had UMDF drivers installed and ran for a very long time, the resulting leak from the auto-launch thread would eventually do the usual low-memory nasty things to you.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There were a few typos and a lot of rather poorly expressed concepts (probably some grammatical errors as well) in the tooltips [although I'm often tempted to rewrite the lot of them every time I look at them].&lt;/p&gt;  &lt;h2&gt;Added touches&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;I now show you the start type of each KMDF driver (when you select it).&lt;/li&gt;    &lt;li&gt;When running locally (and where I can, I also do this remotely for KMDF runtime) the true WDF version information for the runtime and each client driver are presented.&amp;#160; I overwrite any version info the coinstaller wrote (which we know is untrustworthy) with the real stuff when I find it.&lt;/li&gt;    &lt;li&gt;Tool settings for the app itself are now managed by machine name (they have always been per-user, as well)- so you can have different preferences for local and remote, and even different settings for each remote machine you manage with it [not that this was in high demand- it was just easy to do and harmless enough].&lt;/li&gt;    &lt;li&gt;I tried to unclutter the UI a bit (but new features cluttered it back up fairly quickly).&amp;#160; I may try to do something more drastic after Windows 7.&lt;/li&gt;    &lt;li&gt;There are some new features in KMDF 1.9 that only apply to KMDF 1.9 client drivers- so the UI now changes a bit when you have a 1.9 or pre 1.9 driver selected.&lt;/li&gt;    &lt;li&gt;I realized there was a smarter way to show how the handling of WdfVerifierBreakPoint and the WDFVERIFY macro work with respect to the overall Framework verifier settings (drop list instead of checkboxes that mysteriously changed settings on you in unexpected ways).&lt;/li&gt;    &lt;li&gt;I added a splash screen- it's a bit klutzy, but at least you don't sit wondering what's happening after you invoke it-&amp;#160; it provides some progress messages&lt;/li&gt;    &lt;li&gt;Eliyas said he wanted an icon, so being cheap, I made one (the letters WDF in blue with a green check mark sketched in as a background), rather than try to find a real artist.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The method for determining the client version of a KMDF driver and for that matter of the runtime was fun and might interest some readers, so I'll blog about that shortly.&amp;#160; But don't expect much code- I don't believe in samples, I believe in concepts, but &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/02/08/why-you-ll-never-see-a-sample-from-me.aspx" target="_blank"&gt;I hashed out my thoughts on the subject of sample code in part some time ago&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So here's the next 1000 words (I'd show you a 1.9 inbox driver, but that would reveal things to be disclosed at WinHEC) - KMDF tab (on all snapshots I've added some highlighting or markup for new stuff):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-KMDF-Tab-No-1.9-features.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="New-KMDF-Tab-No-1.9-features" src="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-KMDF-Tab-No-1.9-features_thumb.png" width="582" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here's the UMDF tab- the list of drivers would also show, but I didn't have any handy and am short on time (I'll snap one for a later post, perhaps):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-UMDF-Tab-No-Drivers.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="New-UMDF-Tab-No-Drivers" src="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-UMDF-Tab-No-Drivers_thumb.png" width="555" height="462" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Preferences page has a new control related to the harvesting of KMDF version info (you only see this when running against the local machine)- it's there because it can take some cycles, so you only want to repeat it when you really think you need the info (first time through registers it results, so once might be enough):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-Preferences_1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="New-Preferences" src="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/New-Preferences_thumb_1.png" width="555" height="462" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Did I mention a (less than awesome, admittedly) splash screen so you don't get bored while it loads?&amp;#160; When it is scanning for drivers, it lists each service- I could keep trying to get a snapshot right when a real driver is being looked at, but I'm not.&amp;#160; So the one here has nothing to do with drivers...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/Splash-Screen.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Splash-Screen" src="http://blogs.msdn.com/blogfiles/bobkjelgaard/WindowsLiveWriter/NewinWdfVerifierthetweaksandfixes_A034/Splash-Screen_thumb.png" width="244" height="212" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160; Enough pictures for now- probably more than you needed.&amp;#160; Next time I'll talk about the easy parts of getting version information, then when I find time, I'll talk about the fine hacks I made to get the real KMDF client driver versions, and you can decide if you even want to let this code near your machine...&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now Listening: Grateful Dead- Built To Last [album]- Blow Away&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9024986" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category></item><item><title>DDC Day 3 (and final) soon to come</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/10/01/ddc-day-3-and-final-soon-to-come.aspx</link><pubDate>Wed, 01 Oct 2008 16:32:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8971574</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8971574.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8971574</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8971574</wfw:comment><description>&lt;p&gt;&lt;a target="_blank" href="http://blogs.msdn.com/bobkjelgaard/archive/2008/09/30/ddc-day-2-is-on-its-way.aspx"&gt;In my post about yesterday&lt;/a&gt;, I left out an observation I feel the need to make.&amp;#160; My intent for listing the folks I met in the morning wasn't so much to drop names as to observe that (a) they were appreciative of what I have done in terms of blogging an newsgroup assistance (which is always easy feedback to accept, particularly from a stalwart group such as that) and (b) it's still something of a kick for me to be able to talk to them, and get some of the conversation you just can't carry out via email.&amp;#160; As a developer, it's good to see what experts do, and as a provider of developer tools, its good to get the chance to collect all the unvarnished feedback you can about the utility of what you are providing.&lt;/p&gt;  &lt;p&gt;I missed a lot of sessions yesterday I would have liked (such as Daniel Mihai's presentations on Driver Verifier).&amp;#160; But I did catch Neslihan's presentation on WDF logo requirements [and I need to remember a couple of things we might want to add to that occurred to me overnight], and then &lt;a target="_blank" href="http://blogs.msdn.com/iliast"&gt;Ilias&lt;/a&gt; and I did our first pass at the coinstaller presentation.&amp;#160; Numbers were a bit light- maybe 2 dozen people was all, but I think we did fairly well overall in terms of just presenting our material, at least.&lt;/p&gt;  &lt;p&gt;The Ask The Experts session was a bit lopsided- lots of experts, and something of a paucity of people wanting to ask.&amp;#160; We did get a few questions (unfortunately both &lt;a target="_blank" href="http://blogs.msdn.com/doronh"&gt;Doron&lt;/a&gt; and Eliyas were unavailable, and the rest of us still have some gaps- at least &lt;a target="_blank" href="http://blogs.msdn.com/peterwie"&gt;Peter&lt;/a&gt; was there for some of the tougher technical questions- some of the questions we didn't know sure answers to weren't actually all that technical- more along the lines of adoption numbers, which I sort of pay attention to, but only in the fuzzy, order of magnitude sense).&lt;/p&gt;  &lt;p&gt;Got a couple more good test-related questions in hallway conversations, and finally met Penny Orwick, whom we all owe a debt to for her work on the WDF book, and to whom we owed a further debt as presenters because she edited our slides.&lt;/p&gt;  &lt;h2&gt;And now for something of greater utility...&lt;/h2&gt;  &lt;p&gt;As part of my preparation for the coinstaller debugging presentations at DDC and WinHec, I have put together &lt;a href="http://blogs.msdn.com/bobkjelgaard/pages/Resources-For-Installation-Problems.aspx"&gt;this collection of information&lt;/a&gt; about WDF components for all shipped versions, along with related information, so there's a single place usable for triaging those occasional installation issues.&amp;#160; Parts of it are still under construction (and some things I want to include require me to link to some files I host elsewhere), but I'm open to comments and suggestions, as always.&lt;/p&gt;  &lt;p&gt;Finally, a warning about the shipping versions of WdfVerifier:&amp;#160; I messed up the registry keyword for handle tracking in KMDF, so the tool won't actually manage that setting for you.&amp;#160; If we provide a WDK with the &amp;quot;pre-beta&amp;quot; release of Windows 7 about to hit the streets [at WinHec and PDC], it won't have this fixed- but it will be there in the WDK tied to the Win7 Beta.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8971574" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item><item><title>DDC starts in less than an hour</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/09/29/ddc-starts-in-less-than-an-hour.aspx</link><pubDate>Mon, 29 Sep 2008 16:21:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8968867</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8968867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8968867</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8968867</wfw:comment><description>&lt;p&gt;Plenty of good stuff for today- begin with Eliyas and Peter going over what's new in WDF for Windows 7 (or as we prefer to think of it WDF 1.9, since much of it also works all the back to Windows 2000 [KMDF] or Windows XP [UMDF]).&amp;#160; It continues later with our first presentation of talks on the &amp;quot;shared secrets&amp;quot; of the Windows Driver Frameworks.&amp;#160; The first talk discusses the implementation of the frameworks themselves, while the second presentation (my first of this conference, and my first in about 16 years) discusses how the frameworks are tested.&amp;#160; The latter talk will also be one of the final talks of the day.&lt;/p&gt;  &lt;p&gt;Tomorrow will include &lt;a target="_blank" href="http://blogs.msdn.com/bobkjelgaard/archive/2008/09/11/potpourri.aspx"&gt;Neslihan's talk about getting a logo for your WDF driver&lt;/a&gt; (yes we are adding logo requirements specifically for WDF drivers- primarily for KMDF at the moment).&amp;#160; It will include some excellent talks by Praveen Rao about work we have done on WDF drivers in the storage space, and again the final talk (at least in that room) is &lt;a target="_blank" href="http://blogs.msdn.com/iliast"&gt;Ilias&lt;/a&gt; and I discussing the WDF coinstallers.&lt;/p&gt;  &lt;p&gt;Wednesday we'll repeat all the talks I am in- the shared secrets talks will be back to back in the morning, but I won't catch part 1 that day because I'll be in another room with &lt;a target="_blank" href="http://blogs.msdn.com/iliast"&gt;Ilias&lt;/a&gt; repeating the presentation on the coinstallers.&lt;/p&gt;  &lt;p&gt;There's so much more, too- SDV, DSF, the innards of driver verifier, annotations for PFD and SDV, new test techniques from my colleagues James Moe and Dieter Achstettler, excellent talks on device installation, many driver technologies (several on printing, I can't help but notice).&amp;#160; I could go on and on, except I've got some work to get to this morning [and I'll be leaving soon so I can register and begin my bit of supporting the conference].&lt;/p&gt;  &lt;p&gt;Ask the experts session tomorrow night, bowling tonight, space set aside for us to talk with developers before and after talks, labs, panel discussions, Q &amp;amp; A with our most senior engineering staff, and a few surprises I'm not at liberty to mention even now.&lt;/p&gt;  &lt;p&gt;My plan for now is to try to attend the whole thing- how well that works depends upon how things go in the lab [we've got some critical work going on, but let's see how the junior staff handles things for a bit], and whether I'm providing any benefit by being there [if I can be more effective working on test tasks in my office, I'll return to it].&amp;#160; Of course, assuming my laptop works there, I may just blog a bit more than usual.&amp;#160; Not having a cell phone, it might be a bit hard for people to contact me if they need me back at the office [although they will know where I am, anyway].&lt;/p&gt;  &lt;p&gt;So, I hope to see a few of my readers there (both those within Microsoft, and especially those from the outside).&amp;#160; Hope all enjoy there time.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now playing:&amp;#160; The acid rock classic jam &amp;quot;Dark Star&amp;quot; from Live / Dead (of course by the Grateful Dead)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8968867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/debugging/default.aspx">debugging</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/PFD/default.aspx">PFD</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/DSF/default.aspx">DSF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Driver+Verifier/default.aspx">Driver Verifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item><item><title>Looking Ahead- Conferences!</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/09/10/looking-ahead-conferences.aspx</link><pubDate>Thu, 11 Sep 2008 07:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8943119</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8943119.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8943119</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8943119</wfw:comment><description>&lt;P&gt;Since I noticed &lt;A href="http://blogs.msdn.com/888_umdf_4_you/" target=_blank mce_href="http://blogs.msdn.com/888_umdf_4_you/"&gt;Patrick&lt;/A&gt; has &lt;A href="http://blogs.msdn.com/888_umdf_4_you/archive/2008/09/03/8922376.aspx" target=_blank mce_href="http://blogs.msdn.com/888_umdf_4_you/archive/2008/09/03/8922376.aspx"&gt;spilled the beans&lt;/A&gt; [just before the second question], I might as well cover this topic while I wait for my dinner to bake [I eschew microwave ovens these days- just seems better to let it cook the old-fashioned- if early-to-mid-twentieth century is old-fashioned- way].&lt;/P&gt;
&lt;P&gt;I've been through some of my belongings of late and put a few items up on the corkboard in my office- pictures of me from the last several decades, ads from bands I played with in the 70's and 80's, and so on [along with my Master Chief calendar and pictures of my daughter and InuYasha].&amp;nbsp; Two of the recent additions are from my first time around at Microsoft.&amp;nbsp; One of them, which I showed off recently at a WDF team meeting related to this article's topic, is what I believe was my original Microsoft card key- a much different technology from those in use today, which are basically proximity read- I believe this was a magnetic stripe like a credit card [but can't be sure, because that part of the back of it is gone].&amp;nbsp; I think the big surprise for most was that 19 years ago, I had no facial hair and very short hair [almost no gray then, either].&amp;nbsp; Weighed a lot less, too, and still had two working eyes [even if they were near-sighted].&lt;/P&gt;
&lt;P&gt;The other [finally getting to my point] is a speaker's badge for "Microsoft Windows NT Device Driver Developer's Conference".&amp;nbsp; That was from 1992 [I wouldn't know for sure except that it turns out I still had the conference material with the dates on it], and it was the real "first DDC".&amp;nbsp; I was the last speaker on the final day- the track was about Win32 printing [and this was the very first release of Windows NT and the first 32-bit OS Microsoft released], and I was speaking about testing and logoing printer drivers- that was my first time hearing about WHQL, by the way- when I was preparing the talk and they asked me to add some slides related to it.&lt;/P&gt;
&lt;P&gt;Of course, my prized possession is the "Ship-It" award for OS/2 3.1 [which of course didn't exist as a Microsoft product- it was a typo, but I snuck mine out before the manual update processes in use then could correct it], but that just made this paragraph irrelevant and disruptive of the flow.&amp;nbsp; I'm like that...&lt;/P&gt;
&lt;H2&gt;DDC- what a long, strange trip it's been&lt;/H2&gt;
&lt;P&gt;The Driver Developer's Conference is an intensive high-level conference with some NDA-type restrictions [I'm no lawyer- it appears these aren't as strict as the MVP summit, but who am I to judge or care?].&amp;nbsp; It will be held on the Microsoft campus later this month.&amp;nbsp; The meeting I am alluding to was our team reviewing one of the presentations I will be participating in [and I've been slide-smithing ever since].&amp;nbsp; In one session, &lt;A href="http://blogs.msdn.com/iliast/" target=_blank mce_href="http://blogs.msdn.com/iliast/"&gt;Ilias&lt;/A&gt; and I will be discussing the WDF coinstallers.&amp;nbsp; Ilias will discuss the whys and hows, while I will finish up by telling you what you can do when things go wrong.&amp;nbsp; In the other technical session, I, Shyamal and Wei will tell you about how we test the frameworks, including things we do that can translate into your own test problems.&lt;/P&gt;
&lt;P&gt;There will be some Ask The Experts sessions, and I know WDF will be there, but I don't think the final lineup for that's been determined.&amp;nbsp; I can live with it myself, either way...&lt;/P&gt;
&lt;P&gt;As for the rest of the conference, well--- one of the more attractive nuisances of the past several days is that all the presentations go on a single sharepoint site, so I've been previewing a few that interested me.&amp;nbsp; Lots of good stuff- device installation, DSF [my favorite non-WDF tool], new technologies all across the space, etc.&amp;nbsp; I also see the world of printer testing tools is in great hands [probably better ones than mine ever were!].&lt;/P&gt;
&lt;H2&gt;WinHEC- a first time for everything&lt;/H2&gt;
&lt;P&gt;The &lt;A href="http://www.microsoft.com/whdc/winhec/default.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/winhec/default.mspx"&gt;Windows Hardware Engineering Conference&lt;/A&gt;- well, you can use the link to find out what you need to know.&amp;nbsp; I'll be there too, with somewhat stripped-down versions of both talks [at least, I think that's what's happening].&amp;nbsp; It's still several weeks away, and there's DDC to get through first.&amp;nbsp; But it will be in LA.&amp;nbsp; Not certain who all else is going, yet, but I know Ilias is, and I can't believe it can be done without the likes of &lt;A href="http://blogs.msdn.com/doronh/default.aspx" target=_blank mce_href="http://blogs.msdn.com/doronh/default.aspx"&gt;Doron&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/peterwie/default.aspx" target=_blank mce_href="http://blogs.msdn.com/peterwie/default.aspx"&gt;Peter&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I've been on the mailing list for years, but never gone (I was supposed to go a couple of years back, when it was in Seattle, but had car trouble).&lt;/P&gt;
&lt;P&gt;So perhaps I'll meet a few of you there.&amp;nbsp; I'll be the one with all the hair and the wacky left eye [unless I can't pass the airport security checks, or the other passengers find me scary and demand I leave the plane]. Well, I've lived in LA a few times and driven from here to there and back before...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8943119" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/lifestyle/default.aspx">lifestyle</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/PFD/default.aspx">PFD</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/DSF/default.aspx">DSF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/DTM/default.aspx">DTM</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Driver+Verifier/default.aspx">Driver Verifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item><item><title>It's soup!</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/04/17/it-s-soup.aspx</link><pubDate>Fri, 18 Apr 2008 04:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8405686</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8405686.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8405686</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8405686</wfw:comment><description>&lt;P&gt;You can now get the good WDF 1.7 coinstallers from &lt;A href="http://connect.microsoft.com/" target=_blank mce_href="http://connect.microsoft.com"&gt;Microsoft connect&lt;/A&gt;.&amp;nbsp; What you will get is an MSI that will copy them and some accompanying notices to your machine.&amp;nbsp; If you have the WS08 RTM WDK (18000) replace those coinstallers with these.&amp;nbsp; If you have the 18001 WDK (with no WDF coinstallers) just use these.&lt;/P&gt;
&lt;P&gt;In a while (hope it's a few weeks, anyway, I'm getting real tired of coinstallers) a WDK 18002 will be produced and take the place of the WDK sans coinstallers plus coinstaller MSI.&amp;nbsp; We've started the process to get this stuff into MSDN proper, but that process has been a bit sluggish lately, so I'm not about to offer any estimates as to when it will make it there.&lt;/P&gt;
&lt;P&gt;Short and to the point...&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Now Playing: Yuki Kajiura [Noir Vol 2]: Secret Game- interesting anime- gotta spring for "Madlax" sometime...&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8405686" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category></item><item><title>The light at the end of the WDF 1.7 tunnel</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/04/17/the-light-at-the-end-of-the-wdf-1-7-tunnel.aspx</link><pubDate>Thu, 17 Apr 2008 18:04:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8403315</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8403315.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8403315</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8403315</wfw:comment><description>&lt;p&gt;I know people want to know about this, but firm dates still prove elusive.&amp;#160; My best guess is today or tomorrow at this point.&lt;/p&gt;  &lt;p&gt;Basically we're trying to put an interim package up that satisfies everyone and isn't going to cause us foreseeable problems in the future.&amp;#160; Eliyas keeps tweaking this MSI to satisfy one concern or another raised by members of the Dev, PM and QA teams, and once it's done, it will go to &lt;a href="http://connect.microsoft.com" target="_blank"&gt;Microsoft Connect&lt;/a&gt; and you'll have your coinstallers.&amp;#160; Sometime after that we'll have an updated WDK with everything tied together nicely again.&amp;#160; As I understand it, the links for it on MSDN will work eventually, but I have no idea when.&lt;/p&gt;  &lt;p&gt;As far as the real testing- all done, all good.&amp;#160; All the legal and licensing stuff, good.&amp;#160; Just have to make an MSI with everything in it that doesn't look like it was slapped together at the last minute-&amp;#160; even though it sort of is.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now playing: Yoko Kanno [Ghost in the Shell Stand Alone Complex, V2]: Psychedelic Soul&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Some follow up&lt;/h2&gt;  &lt;p&gt;Kumar fixed &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/04/11/now-for-a-different-umdf-coinstaller-story.aspx" target="_blank"&gt;the UMDF coinstaller build problem&lt;/a&gt; (which you'll never see) in fairly short order, and then went on vacation himself.&amp;#160; So of course, more build problems turned up- but until we get that MSI out, not likely I'll get any traction.&amp;#160; This time the x64 update package for WinXP and Win2K3 is missing some pieces- blocks me, but again, I doubt this is a problem that affects anybody but my team [call this an attempt to give you an idea what it can be like sometimes &amp;quot;on the inside&amp;quot;, because it's easy to get the idea everything is endlessly smooth and we spend all our time pondering the whichness of the why].&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now Playing: Grateful Dead [Live / Dead] St Stephen [always a welcome album]&lt;/em&gt;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;So &lt;u&gt;that's&lt;/u&gt; what they look like!&lt;/h1&gt;  &lt;p&gt;Yesterday I gave a brief presentation on WdfVerifier and WdfTester in a session on Driver Testing at the Global MVP summit.&amp;#160; Met Mikhail Vodicka, Gianlucca Varenni, Martin O Brien and Maxim Shatskih- or rather at least exchanged greetings face-to-face, either in the session or out in the hall afterward.&amp;#160; I'd dropped off the OSR lists for a bit to help manage my email and workload, but after talking to Martin a bit, I decided to re-subscribe again.&amp;#160; Hopefully I can better manage my impulses to jump in on some of the esoteric issues that occasionally surface there...&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now Playing: Kraftwerk [The Mix] Musique Non Stop&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8403315" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/lifestyle/default.aspx">lifestyle</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category></item><item><title>Now for a different UMDF Coinstaller story...</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/04/11/now-for-a-different-umdf-coinstaller-story.aspx</link><pubDate>Sat, 12 Apr 2008 01:40:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8382540</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8382540.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8382540</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8382540</wfw:comment><description>&lt;p&gt;This one can never affect you, so your blood pressure can start easing now.&amp;#160; It's just been a while since I tried to put on my &amp;quot;war stories&amp;quot; hat and tried tellin' one of them tales...&lt;/p&gt;  &lt;h1&gt;In the Beginning was...&lt;/h1&gt;  &lt;p&gt;the need to make sure drivers we build for test are signed so we can automate their usage and avoid all the nasty workarounds unsigned driver installation entails- particularly since we test on so many operating system platforms.&amp;#160; In the early versions of KMDF, we did this as part of our normal build process, getting them signed just like all the rest of the OS is.&amp;#160; Even when we went to produce releases (this happens in build lines not under our direct control) they built all the samples and test code as well, and life was good.&amp;#160; We always had a coinstaller with the right update packages in it, and everything was signed.&lt;/p&gt;  &lt;p&gt;You still see vestiges of those halcyon days in the KMDF samples, where entries for the catalog &lt;em&gt;kmdfsamples,cat&lt;/em&gt; can be found even now [and this will be the case for as long as we are responsible for them].&amp;#160; All of our test drivers are also catalogued in there, so we can mix and match with impunity and it all works as long as it's from the same build.&lt;/p&gt;  &lt;h1&gt;The price of success&lt;/h1&gt;  &lt;p&gt;But we also became a part of the OS beginning with Windows Vista.&amp;#160; Now for a host of reasons, the build lines that build the OS produce coinstallers for KMDF and UMDF that contain &lt;u&gt;no&lt;/u&gt; update packages.&amp;#160; We did continue to build coinstallers with update packages on our private build machines, though.&amp;#160; We utilized various nefarious techniques to undo the system's file protection and place KMDF on a Vista machine when testing so we could test our latest versions, so things still weren't too bad.&amp;#160; But sometimes we wanted to use coinstallers and test binaries from differing builds- signing was becoming a problem.&amp;#160; More importantly, when we approached WDK release times, our external builders now only produced the coinstallers.&amp;#160; So we no longer had a single nice signed package automagically produced for us.&lt;/p&gt;  &lt;p&gt;We worked around this as best we could- typically one of the SDETs assembled a &amp;quot;build&amp;quot; out of disparate pieces and then re-ran the signing steps with a bcz in the proper directory.&amp;#160; Like all manual processes, errors happened, but we muddled along.&lt;/p&gt;  &lt;p&gt;Finally, late last year things got to be too much for Shefali and I- we had to run really old test content and found the signatures were no longer valid.&amp;#160; I should explain that a bit, if I can.&amp;#160; Developers working on Windows have certificates created for them identifying components they build that chain to a special &lt;em&gt;test root certificate&lt;/em&gt; (a term you can look up, for instance- &lt;a href="http://msdn2.microsoft.com/en-us/library/aa379872.aspx" target="_blank"&gt;this MSDN article touches upon them&lt;/a&gt;) that is recognized by most interim builds produced of Windows.&amp;#160; This means all of our content is &amp;quot;signed&amp;quot; (and it also means that if any of those signed binaries show up where they should not, they identify who produced it, giving one easy place to start searching for a leak).&amp;#160; When we approach releases a switch is made to more official forms of signing- our test drivers are also part of those builds, although they never ship to anyone, so we're still good to install on those- but we can't use them anywhere else because the coinstallers are still what we call &amp;quot;thin&amp;quot; [no update packages].&amp;#160; Of course, since nobody should need them for very long, those certificates also have a very short shelf life, which is what I was referring to at the start of this rambling paragraph of mine.&lt;/p&gt;  &lt;p&gt;We also had a hard time making clear to the software test engineers who were trying to run our rapidly changing test mixes what parameters to use (or even to figure out for ourselves which combinations of parameters really did what).&amp;#160; This led to delays, confusion, dissatisfaction [one of those poor STEs must have been sure he was on the verge of being dismissed- and that bothered me because I knew it wasn't all his fault], and other generally bad and stressful things.&lt;/p&gt;  &lt;h1&gt;If you want it done right, DIY&lt;/h1&gt;  &lt;p&gt;So, if self-signing driver packages and using test-signing approaches is good enough for our customers, it ought to be good enough for us.&amp;#160; I redesigned our entire automation process around this approach (with much encouragement and prodding from Shefali).&amp;#160; I solved both problems at the same time, but since I like to wander when telling tales, and I'm the one with the keyboard, I shall tangent...&lt;/p&gt;  &lt;h2&gt;Too many cooks&lt;/h2&gt;  &lt;p&gt;Normally a good test automation design in WTT (known to you as DTM) is fairly self-contained.&amp;#160; It gets its stuff, does its work, and cleans up after itself.&amp;#160; You see this in the three phases- setup, regular, and cleanup.&amp;#160; Virtually all of our test jobs worked this way, meaning any one could run independently of the others.&lt;/p&gt;  &lt;p&gt;We have literally hundreds of jobs that work this way- the bulk of them testing the KMDF DDI.&amp;#160; They took parameters with little bits and pieces of path names [because most of the time everything came from a specific machine, or if the machine changed, parts of the path were known, etc] and assembled them together to locate things, install them, run them, and clean up.&lt;/p&gt;  &lt;p&gt;But the names weren't consistent, the portions mapped weren't consistent and while it was sometimes possible to get a correct path by using .. in path entries and even blank entries for some parameters, determining those values was a logic puzzle in and of itself.&amp;#160; Worse, you couldn't be sure after a run that all of those jobs had really run the same thing.&amp;#160; Since &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/11/07/someone-must-want-this-job.aspx" target="_blank"&gt;I now found myself the only cook left in the KMDF QA kitchen&lt;/a&gt;, I took advantage of the situation to impose order on the chaos.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;Slicing the knot&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://www.geocities.com/~jlhagan/fineart/gallery3.htm" target="_blank"&gt;The story of Alexander the Great and the Gordian Knot&lt;/a&gt; has been with me all these last few weeks for some reason, and this may have been another of my &amp;quot;Brute Force&amp;quot; solutions.&amp;#160; I broke our test pass into three stages:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Staging- in this phase, all of the tools and content used is copied from disparate and myriad sources to the test machine in a known location.&amp;#160; Common tools like DSF are installed.&amp;#160; The key to the underlying narrative here is that this job also creates a test certificate on the machine, creates a catalog containing the entire contents that had been copied earlier, and signs that catalog with the new certificate.&amp;#160; It then sets the machine up so it works with test-signed binaries effectively.&amp;#160; So there's still a kmdfsamples.cat- but now it gets built fresh and piping hot right at your table [that thought makes me want to visit &lt;a href="http://www.benihana.com/" target="_blank"&gt;Benihana&lt;/a&gt;].&lt;/li&gt;    &lt;li&gt;Setting the framework on the machine.&amp;#160; In this phase, if we need to overwrite the normal version of KMDF already there we do- either brute force (by overriding the system protection on it) or elegantly (by using a &amp;quot;fat&amp;quot; coinstaller containing the appropriate update package).&amp;#160; As &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/12/13/kmdf-1-7-and-the-server-2008-vista-sp1-rc1-wdk.aspx" target="_blank"&gt;mentioned somewhere in here&lt;/a&gt;, you have to reboot the machine if the coinstaller is used (in fact, you have to do it either way).&amp;#160; Sometimes we don't even need this phase [XP, for instance].&amp;#160; Whenever possible we try to utilize real coinstallers in random configurations to more closely duplicate the end user experience, after all.&lt;/li&gt;    &lt;li&gt;The tests themselves.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I had a single ground rule- &lt;strong&gt;&lt;em&gt;only the staging job would have any parameters&lt;/em&gt;&lt;/strong&gt;.&amp;#160; All the subsequent jobs would use what was staged.&amp;#160; There was a corollary based on previous experience:&amp;#160; &lt;em&gt;&lt;strong&gt;those parameters would be substantially complete path names&lt;/strong&gt;.&amp;#160; &lt;/em&gt;They might take longer to type, but it was easier to switch and accommodate quirks in how paths were assembled as you tried to get things from elsewhere if you just always took entire paths.&lt;/p&gt;  &lt;p&gt;I finished most of that work in one weekend (in November, if I remember correctly).&amp;#160; The most mind-numbing part of it was modifying the existing tests- I'd go through task by task with the new &amp;quot;known&amp;quot; staged path in the clipboard, and selected each directory name I found and pasted it in.&amp;#160; There were some deviations that I wound up adjusting in the initial setup job because they were done too many places.&amp;#160; There were places where parameters were passed down into library jobs that I left untouched (I actually set any such parameters to totally invalid values to make sure nothing escaped my wrath).&lt;/p&gt;  &lt;p&gt;After all that surgery I now had the ability to mix and match with much greater flexibility, and simple instructions with four basic parameters that covered all the known variations we had seen.&amp;#160; I then created a Wiki on the internal Microsoft network where I listed the instructions for all of the normal passes we did so we could clearly communicate what settings were to be used each day- at first, the STE could literally cut and paste from my instructions.&amp;#160; Once they were familiar with the new setup, they could do more of the work themselves.&amp;#160; You wouldn't recognize that same STE today.&lt;/p&gt;  &lt;p&gt;It worked pretty well, even if underneath there are a lot of rough edges (if you like clean setups, this isn't one- the sheer scale of the task is too big to justify yet).&amp;#160; It also made testing test changes easier- I build everything on my machine, and can schedule a job to pick up the content from there.&amp;#160; If I'm doing even more aggressive mixing and matching than usual, I actually assemble the binaries on the test machine and let the setup job copy them from there into the new official staged location [one part of the hard drive to another, but it's all with a tool we use continually and rarly needs to be done].&amp;#160; To be fully fair, I should add that I didn't get all the tests at this time, just the ones that we absolutely had to keep running.&amp;#160; For instance, our stress mix fell out.&amp;#160; But Shefali later chipped in on her own and got them working.&lt;/p&gt;  &lt;p&gt;Life was good- and there was now time to work on problems in the test code instead of trying to figure out how to continually tweak creaky automation into doing something slightly different every few days.&amp;#160; Shefali seemed pleased, and what the heck, making the boss happy is generally a good idea in the business world...&lt;/p&gt;  &lt;h1&gt;Trouble in Paradise&lt;/h1&gt;  &lt;p&gt;Until I deployed a new test.&amp;#160; Or rather a new variation on an old test.&amp;#160; I have a rather elaborate setup I use to verify operation of the IoTarget and IRP processing function in KMDF [although I don't go totally into queues- just the very basic configurations], and to support some new features in WDF 1.7 you'll be hearing about soon, I added UMDF drivers into that test.&amp;#160; I had to add another parameter to make sure I had all the flexibility I needed in finding a UMDF update coinstaller, but that's not a problem.&amp;#160; I put it all together, tested it quite a bit, rejoicing somewhat in how easy this new process made it for me to do a test that was now creating 88 different devices on top of a virtual test bus, installing the proper drivers with no popups in sight, and then putting those devices through their paces- and it looked good.&amp;#160; So I called it complete. got it reviewed, and checked it all in.&amp;#160; [For the 2 or 3 regular readers [overestimating my impact again?] &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/02/08/why-you-ll-never-see-a-sample-from-me.aspx" target="_blank"&gt;this is the test with the targets and &amp;quot;hunters&amp;quot; where I showed some code here&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt;But early this week, it failed.&amp;#160; Makecat wouldn't process the UMDF coinstaller from our own build machines (to debug it, I forced WTT to halt when this failed- we were losing logs due to some problems not worth going into here- the following is an email snippet):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif""&gt;I set the task to freeze if it fails.&amp;#160; This is weird- this is the tail of the self-sign log:       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif""&gt;       &lt;p&gt;&amp;#160;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif""&gt;processing: &amp;lt;hash&amp;gt;C:\kmdftest\WUDFSvc.dll.mui       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif""&gt;processing: &amp;lt;hash&amp;gt;C:\kmdftest\&lt;/span&gt;&lt;span style="font-size: 11pt; color: red; font-family: " calibri","sans-serif""&gt;WUDFUpdate_01007.dll&lt;/span&gt;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif""&gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: red; font-family: " calibri","sans-serif""&gt;NOT processed: calculating the indirect data (C:\kmdftest\WUDFUpdate_01009.dll)       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: red; font-family: " calibri","sans-serif""&gt;Failed: CryptCATCDFEnumMembersByCDFTagEx.&amp;#160; Last Error: 0x80004005       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: red; font-family: " calibri","sans-serif""&gt;       &lt;p&gt;&amp;#160;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;span style="font-size: 11pt; color: red; font-family: " calibri","sans-serif""&gt;Errors found in parsing the CDF file       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A comedy of errors ensued for a while after that, as I tried to find out why the 1.7 RC1 coinstaller was there when the job parameters I was told used pointed to locations that couldn't have contained it [if I'd dug into the job reports, I'd have seen that when the set they gave didn't work, they pointed to a server containing that and tried it again].&amp;#160; Once that was settled, I began focusing on why makecat was giving me the ever-so-helpful E_FAIL parsing a file that seemed perfectly good.&lt;/p&gt;  &lt;p&gt;Well, it was the file itself for some reason- take it out of the CDF, makecat worked.&amp;#160; Have it as the only one in the CDF, same error.&amp;#160; Since we&amp;#160; recently had some changes made, I was wondering how they could affect hashing the file- so I went back and tried earlier versions.&amp;#160; This led to another comedy of errors when I inadvertently mistyped a path and the process worked [because it couldn't find the coinstaller, and without going too deep into why, I couldn't treat it as an error at this point in our setup job].&lt;/p&gt;  &lt;p&gt;Well, the world was looking strange- I know I ran this dozens of times while I was developing this, didn't I?&amp;#160; We'd run it the previous week, and there'd been no problems.&amp;#160; It got stranger when I ran the same thing on a Windows 7 machine, and it worked flawlessly.&amp;#160; Why should the OS have made a difference?&amp;#160; It was the same set of binaries, tools and all...&amp;#160; Now if I weren't stressed and well-befuddled by then, I might not have continued to be so stressed and befuddled at that point, but of course I was and I did...&lt;/p&gt;  &lt;p&gt;But this is serious after all- in this design, all the test pass eggs are in one basket called the staging or &amp;quot;Unified Setup Job&amp;quot; and with it broken, NOTHING works!&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;Fools Rush In&lt;/h1&gt;  &lt;p&gt;And this old fool is no exception.&amp;#160; &lt;/p&gt;  &lt;p&gt;Ilias sends me an email about the problem late in the day with &lt;a href="http://www.xkcd.com/378/" target="_blank"&gt;this link&lt;/a&gt; and the comment &amp;quot;real programmers use butterflies&amp;quot;.&amp;#160; I had decided what I was going to do, so at about 5 AM the next morning (I started sometime between 1 and 2 AM) in reply I said, &amp;quot;&lt;span style="font-size: 11pt; color: #1f497d; font-family: " calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: Arial"&gt;A &lt;u&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://en.wikipedia.org/wiki/Image:Sledgehammers-1.jpg" target="_blank"&gt;sledgehammer&lt;/a&gt;&lt;/font&gt;&lt;/u&gt; is more my style&amp;quot;- &lt;font color="#400040"&gt;ahh, well- afterthought says &amp;quot;Real SDETs use sledgehammers&amp;quot; might have been a better retort...&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Onward- &amp;quot;Take the bull by the horns!&amp;quot;, Papa sez to himself, and loads the debugger package on the machine.&amp;#160; Point it to makecat, give it the command line to process the CDF, and go.&amp;#160; Make sure we've got all the symbols [miracle of all, they were there the first time!], and set a breakpoint on the routine name which was most helpfully displayed in that error message above, and go.&amp;#160; Then step into the code [now while I did have symbols, I don't normally need to work with that part of the Windows source, and this is Windows 2003, anyway- so I'm doing it the old-fashioned way, reading the assembler and using the old noggin to cipher out what's up...&amp;#160; I wasn't totally cheating- but because I had symbols I could see internal names and also the names and types of local variables, so I wasn't flying entirely blind].&lt;/p&gt;  &lt;p&gt;Now before I did this, I went through a phase where I thought there was a defect I could note externally that would tell me what had happened- and in the process, I dumped the headers of the coinstaller with the linker (link /dump /headers &amp;lt;file name&amp;gt;).&amp;#160; It seems to me that my long-term memory is beginning to suffer the ravages of age, but short-term is still pretty good, so I still remember things like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 10 number of directories     &lt;br /&gt; 11440 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8D] RVA [size] of Export Directory      &lt;br /&gt; 10974 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50] RVA [size] of Import Directory      &lt;br /&gt; 15000 [&amp;#160; 12A53C] RVA [size] of Resource Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Exception Directory      &lt;br /&gt;&amp;#160;&lt;font color="#ff0000"&gt;13400 [&amp;#160;&amp;#160;&amp;#160;&amp;#160; FB8] RVA [size] of Certificates Directory&lt;/font&gt;      &lt;br /&gt;140000 [&amp;#160;&amp;#160;&amp;#160;&amp;#160; AE0] RVA [size] of Base Relocation Directory      &lt;br /&gt;&amp;#160; 1210 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1C] RVA [size] of Debug Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Architecture Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Global Pointer Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Thread Storage Directory      &lt;br /&gt;&amp;#160; 5530 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 40] RVA [size] of Load Configuration Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Bound Import Directory      &lt;br /&gt;&amp;#160; 1000 [&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1D0] RVA [size] of Import Address Table Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Delay Import Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of COM Descriptor Directory      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 [&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0] RVA [size] of Reserved Directory&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;what was odd, was that even though this says a certificate was there, I couldn't see one in Explorer.&amp;#160; Odd, but it didn't raise any red flags to this old bull, so on he went.&lt;/p&gt;  &lt;p&gt;Well, after much digging and a bit of backtracking, I found the place makecat decided to make that error.&amp;#160; So I followed the preceding call deeper and deeper and got into code that was preparing to hash the binary and was looking for parts of the PE image to exclude.&amp;#160; Now it happens I've done lots of hacking to binaries- stripping resources out, putting them back in, altering tables and all sort of general mayhem, so following this code is a snap, even in assembler [with those handy locals about, anyway].&amp;#160; I find a path where it is clearly failing, and looking back up through the registers shown as I single-stepped the code, the values FB8 and 13400 caught my eye.&amp;#160; Hurrah for what memory remains!&amp;#160; A quick check confirmed they were the header values.&amp;#160; Bashing them against the values in dv, I had my cause...&lt;/p&gt;  &lt;p&gt;It had refused to hash the binary because the certificate was not at the end of the file's memory image- specifically, the resources followed it.&amp;#160; It turns out this also caused the certificate to be invisible to explorer and made signtool verify most unhappy [but signtool also happily replaced the certificate in situ every time I tried, alas].&lt;/p&gt;  &lt;p&gt;I then sent a rather rambling and somewhat incoherent email to &lt;a href="http://blogs.msdn.com/iliast" target="_blank"&gt;Ilias&lt;/a&gt; telling him we'd been building an unsignable UMDF coinstaller [too much stress and too little sleep- forgot that it had worked in Windows 7] since time immemorial.&amp;#160; Probably boosted his blood pressure since I wasn't all that clear I meant only on our private build line [obviously WHQL signs the official versions from time to time, after all].&amp;#160; I also wasn't making any clear distinction between signing the binary by embedding a certificate and signing it by having it properly hashed in a catalog signed with an embedded certificate [that duplication of terms has always been a source of confusion] . After a face to face and some more coherent and detailed explanations from me we had it down- that only the UMDF coinstaller from our private line was unsignable, and then only on Windows 2003 and earlier [I'm afraid you'll have to repeat some of what I did to see why]...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/12/13/kmdf-1-7-and-the-server-2008-vista-sp1-rc1-wdk.aspx" target="_blank"&gt;As I describe here&lt;/a&gt;, I can disassemble the coinstallers quite readily and in converse I know how they're put together- the problem is clearly that we signed it before we added the update package as a resource [now the package that does this could just be made smarter...]. We found out how that's happening, but fixing it is proving a challenge.&lt;/p&gt;  &lt;p&gt;Well, the main build lines have well-funded and trained staff to handle all those scripts that handle all those things we do after build- on a private line like ours, you have something a bit more seat of the pants, and Ilias is not the originator of most of those scripts.&amp;#160; If you've been around software long enough, you probably get the picture- logging not quite up to snuff, commentary a bit lacking, and so on.&amp;#160; He's still working on it [actually, he's going on vacation, so my old buddy Kumar probably gets to hold this hot potato].&lt;/p&gt;  &lt;p&gt;So you unhappy souls we've held up with the Server WDK [and I mean this with all sympathy and respect- you've got good reason to feel that way] aren't the only ones with coinstaller issues- but at least this one is never going to affect you.&lt;/p&gt;  &lt;p&gt;I also got to tell him somewhere in the middle of all that about my fascination with the Gordian Knot, him being Greek and all [alas, I kept wondering if Greeks regarded Alexander as Greek, since Alexander was Macedonian- but I kept saying Mycenaean and totally fudging the issue- that aging memory again].&amp;#160; This time I figured my brute force approach to the knot was debugging it myself instead of doing the usual thing and trying to find someone who could just tell me or wanted to find out why something didn't work on such an old operating system [lets face it, the main focus is on Windows 7 around here].&amp;#160; He admitted to being one of those closet WdfVerifier users I occasionally speculate exist, and so it went [our conversations are usually quite a bit of fun, even when the situation isn't all that much fun- similar sense of humor, perhaps].&lt;/p&gt;  &lt;p&gt;Those who hate my endless music lists can rejoice- this was much too long to bother trying to accumulate one.&amp;#160; But I at least got to hear all that good stuff (ahh, Garcia's &amp;quot;Bird Song&amp;quot;- &amp;quot;tell me all that you know- I'll show you snow and rain&amp;quot;)&lt;/p&gt;  &lt;p&gt;L8r!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8382540" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/debugging/default.aspx">debugging</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/lifestyle/default.aspx">lifestyle</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category></item><item><title>Make that April 16th for WDF 1.7...</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/04/11/make-that-april-16th-for-wdf-1-7.aspx</link><pubDate>Fri, 11 Apr 2008 19:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8381139</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8381139.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8381139</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8381139</wfw:comment><description>&lt;P&gt;That seems to be the new consensus- only off by a day in &lt;A href="http://blogs.msdn.com/bobkjelgaard/archive/2008/04/03/a-new-target-date-for-wdf-1-7.aspx" target=_blank mce_href="http://blogs.msdn.com/bobkjelgaard/archive/2008/04/03/a-new-target-date-for-wdf-1-7.aspx"&gt;that last post (which also has some background on why).&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Some "Thank You"s&lt;/H1&gt;
&lt;P&gt;First off to Emil Protalinksi, for &lt;A href="http://arstechnica.com/journals/microsoft.ars/2008/04/03/windows-driver-foundation-1-7-slated-for-april-15" target=_blank mce_href="http://arstechnica.com/journals/microsoft.ars/2008/04/03/windows-driver-foundation-1-7-slated-for-april-15"&gt;this article about our updated release date on Ars Technica&lt;/A&gt;.&amp;nbsp; Not many people read my blog (which is fine with me), so having some coverage in an outlet of that caliber helps alleviate the flood of emails we get asking when we're going to be ready.&amp;nbsp; Heck, I wind up there at least a couple times a month without even trying...&lt;/P&gt;
&lt;P&gt;A second to Mr Evgeny Balykov, who just this week has joined us (and Microsoft) as our latest SDET (due to visa issues he is working across the border in Canada, but he's worth the hassle).&amp;nbsp; Jenya's credentials are impressive, and he's eager to help us not have problems like this one [and to make WDF a better product overall].&amp;nbsp; One position left to fill!&lt;/P&gt;
&lt;H2&gt;Tons of Tunes, again...&lt;/H2&gt;
&lt;P&gt;&lt;EM&gt;Grateful Dead [Dead set]: Loser, Space&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&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; [Hundred Year Hall]: Me and My Uncle&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Yoko Kanno [untranslated] : untranslated name- nice Japanese ballad&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&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; [Ghost In The Shell Stand Alone Complex]- Pet Food&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Yuki Kajiura [Madlax]: Inside Your Heart&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Unknown [InuYasha SoundTrack]- instrumental, sounds like the little fox demon's theme...&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8381139" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category></item><item><title>A New Target Date For WDF 1.7!</title><link>http://blogs.msdn.com/bobkjelgaard/archive/2008/04/03/a-new-target-date-for-wdf-1-7.aspx</link><pubDate>Thu, 03 Apr 2008 18:15:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8354089</guid><dc:creator>BobKjelgaard</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobkjelgaard/comments/8354089.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobkjelgaard/commentrss.aspx?PostID=8354089</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobkjelgaard/rsscomments.aspx?PostID=8354089</wfw:comment><description>&lt;p&gt;As noted &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/03/21/so-where-is-wdf-1-7.aspx" target="_blank"&gt;in the previous post (among others)&lt;/a&gt;, I've not been saying anything about when WDF 1.7 will reappear for all those eager to begin using it, biding my time and waiting for a date that sounds achievable and has been given to a customer from our Program Management team.&lt;/p&gt; &lt;p&gt;Well, that's happened, and it's a day familiar to most U.S. taxpayers: &lt;strong&gt;&lt;em&gt;April 15th, 2008&lt;/em&gt;&lt;/strong&gt;.&amp;nbsp; For those not in the US, that's the day income tax payments and their associated paperwork for the previous year are due [although you can get an extension on the paperwork by just filing more paperwork].&lt;/p&gt; &lt;p&gt;I've been involved in the testing, and this date certainly looks achievable.&amp;nbsp; So hopefully this sad sorry saga is soon to be behind us. Still, I feel the need to stress- &lt;em&gt;&lt;u&gt;this is not guaranteed to happen.&lt;/u&gt;&lt;/em&gt;&amp;nbsp; I could never guarantee such a thing, especially given what's already occurred.&lt;/p&gt; &lt;h1&gt;Could I be a little more vague?&lt;/h1&gt; &lt;p&gt;I've decided to shed a bit more light on what happened here.&amp;nbsp; As &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" target="_blank"&gt;I mentioned here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2008/02/23/fire-drill.aspx" target="_blank"&gt;here&lt;/a&gt;, our problems trace to the fact that we are a part of the OS itself beginning with Windows Vista, and this introduced us to new update technologies [both new to us and new to the world of OS updating in general] that we just didn't know as well as one could have hoped.&lt;/p&gt; &lt;p&gt;The initial problem (and the one we were well on our way to fixing by that original March 15th date) was that the mechanism we used to update KMDF 1.5 to KMDF 1.7 was undone by a must-have fix to KMDF 1.5 that was finalized and released later than Server 2008.&amp;nbsp; We knew about it, but we did them in the reverse order, and thus were quite surprised by this.&lt;/p&gt; &lt;p&gt;But in the world of OS fixes, there are two classes of fixes- those we know apply to all users (general distribution) and those that apply only to specific cases (limited distribution).&amp;nbsp; When broad sets of fixes like service packs are made, a decision has to be made which fixes are included and which can be updated or superseded.&amp;nbsp; Turns out we didn't understand this, properly, either.&lt;/p&gt; &lt;p&gt;So our second issue- the one mentioned in the previous post (link above)- came when we found out the UMDF 1.7 coinstaller failed to work when one of those "limited distribution" fixes was present.&amp;nbsp; It seems our coinstallers could not update ANY fix of that sort.&amp;nbsp; Worse, fixing it so they could meant changing the way they were built and packaged- &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/12/13/kmdf-1-7-and-the-server-2008-vista-sp1-rc1-wdk.aspx" target="_blank"&gt;I show here how to disassemble it&lt;/a&gt;, so that should give you an insight into the underlying complexity.&amp;nbsp; But it's even harder than that would look, because the packages I extract there contain more internals you don't need to look at to solve the problem I was describing in that article.&lt;/p&gt; &lt;p&gt;So, learning what needed to be changed, getting the build processes changed, verifying the new processes [and there's a bunch of manual work all the way through all of that], and finally getting the ultimate packaged product and going through all of these new scenarios we now know we need to watch out for- all of that took a lot of time.&lt;/p&gt; &lt;h2&gt;The silver lining&lt;/h2&gt; &lt;p&gt;Well, &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/11/07/someone-must-want-this-job.aspx" target="_blank"&gt;the ongoing staffing problems&lt;/a&gt; I've been mentioning are getting handled.&amp;nbsp; This is the first round of manual coinstaller testing in what seems like a very long time where I was &lt;u&gt;not&lt;/u&gt; doing much of the QA single-handed (speaking only of KMDF, and I've always had some assistance, even then).&amp;nbsp; Instead Wei Mao (whom I first mentioned &lt;a href="http://blogs.msdn.com/bobkjelgaard/archive/2007/12/12/one-day-at-a-time.aspx" target="_blank"&gt;here&lt;/a&gt;) did the super-critical stuff while I tried to get some new test features [behind schedule due to a host of reasons] ready.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/888_umdf_4_you" target="_blank"&gt;Patrick&lt;/a&gt;, Shyamal, myself and Wei then spread out and did all that legacy stuff- will WDF 1.7 update WDF 1.5 or less?&amp;nbsp; On all the OS we support?&amp;nbsp; Do OS upgrades disturb this?&amp;nbsp; Will it install when no WDF version was previously present?&amp;nbsp; Do we still get public symbols (in case the build changes disrupted anything)?&amp;nbsp; Do the debugger extensions still work?&amp;nbsp; I even picked at things a bit with WdfVerifier- and so on.&amp;nbsp; While &lt;a href="http://blogs.msdn.com/iliast" target="_blank"&gt;Ilias&lt;/a&gt; was involved in the earliest stages, he was able to fix a bunch of bugs [many of those coinstaller "suggestions" of mine] while we did this.&lt;/p&gt; &lt;p&gt;So the team is beginning to function like it should again, and that is always a good thing.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Now playing- Yuki Kajiura [Fiction]: Fake Wings&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Tsuneo Imahori [trigun the first donuts]: Philosophy in a Tea Cup&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;There were a slew of others, but for a change, I wasn't at all diligent about noticing- these were the final two...&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8354089" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/KMDF/default.aspx">KMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/customer+service/default.aspx">customer service</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/WdfVerifier/default.aspx">WdfVerifier</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/lifestyle/default.aspx">lifestyle</category><category domain="http://blogs.msdn.com/bobkjelgaard/archive/tags/test+development/default.aspx">test development</category></item></channel></rss>