<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>WinDrvr</title><link>http://msmvps.com/blogs/windrvr/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Fixing WinHEC - Part 2</title><link>http://msmvps.com/blogs/windrvr/archive/2008/02/16/fixing-winhec-part-2.aspx</link><pubDate>Sat, 16 Feb 2008 14:17:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1516016</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=1516016</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2008/02/16/fixing-winhec-part-2.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In my last posting, I presented how to fix WinHEC from the attendee&amp;#39;s point of view.&amp;nbsp; This post will look at why it is critical for Microsoft to get it right.&amp;nbsp; For the last 10 years, the Windows group has been waging a war to improve driver quality.&amp;nbsp; In that time, many great tools and initiatives have aided the development of better drivers.&amp;nbsp;&amp;nbsp; But there are still a lot missing items, and unfortunately, Redmond seems disconnected from some of the problems of the driver community.&amp;nbsp;&amp;nbsp; Yes, a number of us try to call this out, but even the most respected professional will not carry the impact of a room with over a hundred driver developers saying &amp;quot;This tool or program has a problem&amp;quot;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Right now, I cannot think of an effort from Redmond that does not need some improvement, but when I talk to Microsoft developers, many of them do not believe the problems are important.&amp;nbsp; The problems can range from the breaking of most corporate (and many personal) driver build environments by the incompatible changes to the setenv script, to complexity of Driver Test Manager.&amp;nbsp;&amp;nbsp;&amp;nbsp; Worse yet, some efforts that were initially praised by the community are now despised.&amp;nbsp;&amp;nbsp; Take WPP tracing, for example: almost everyone viewed this as a fantastic tool when it came out, but with incompatible revisions and inability of most of the community to get the more advanced features to work, developers are now ripping the traces out of their drivers.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Redmond seems to be charging ahead with new programs and tools, many which appear good, but actually miss the mark terribly.&amp;nbsp; It was revealed on the Microsoft newsgroups recently that they are working on Visual Studio integration for device driver development.&amp;nbsp; While the community talks about this a lot, at last year&amp;#39;s WinHEC, when the question was asked (in the one feedback forum that was held), most people rated this extremely low when compared to other tools and fixes to the existing tools.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Microsoft, you need to get the input of the community.&amp;nbsp; Surveys such as the recent DTM survey are worthless, since they structure the answers into preconceived categories and do not allow the community to interact with each other and Microsoft.&amp;nbsp;&amp;nbsp; The great strength of Windows is the large number, and for most part, good quality of drivers available.&amp;nbsp; Please don&amp;#39;t waste your time on efforts without getting the community involved early on.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, let&amp;#39;s see a WinHEC that is exciting enough to attract a large audience, and filled with feedback sessions attended by Microsoft developers and managers to hear about the problems the community needs fixed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1516016" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/WinHEC/default.aspx">WinHEC</category></item><item><title>Fixing WinHEC</title><link>http://msmvps.com/blogs/windrvr/archive/2008/01/18/fixing-winhec.aspx</link><pubDate>Fri, 18 Jan 2008 21:11:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1469317</guid><dc:creator>DonBurn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=1469317</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2008/01/18/fixing-winhec.aspx#comments</comments><description>&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;As anyone who has been to WinHEC over the years knows, its content swings between being a heavy technical conference and being a marketing conference.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;This year’s WinHEC is scheduled for November 4-7, 2008, again in Los Angeles, California.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I do not expect much from this venue, since neither of the two WinHEC’s previously in LA had a strong technical presence.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Going to LA requires putting engineers on airplanes and into hotel rooms and not just for a few hours in a Seattle conference center.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;So what makes a great techie WinHEC?&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; 
&lt;p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;1.&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Lots of technical presentations –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt; Some of the best conferences limited the keynotes to two.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Good WinHEC’s offer repeats of talks and go until late the last day to allow people to get as much as possible.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; 
&lt;p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;2.&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Ask the Experts – &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Starting in 2001, Microsoft added &lt;i style="mso-bidi-font-style:normal;"&gt;Ask the Experts&lt;/i&gt;, where presenters were available after their talks to take questions.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;Sometimes this was in a separate room, sometimes this was over lunch.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Personally, I like a separate room for an hour or so at each lunch break.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt; 
&lt;p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;3.&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Birds of a Feather – &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;For a number of years, there were &lt;i style="mso-bidi-font-style:normal;"&gt;Birds of a Feather &lt;/i&gt;(BOF) sessions where, for example, driver developers could comment on any topic to the WDK team.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;Sometimes there was a direction provided by Microsoft; much of the feedback for WDF came in BOF’s, but mostly BOF’s were wide open.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;4.&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Developer Lounge – &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Unfortunately, this only happened one year in Seattle.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This was a quiet location near the trade show entrance where you could find many Microsoft developers hanging out.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was a great place to drop by and ask a question, and had the advantage of allowing people to make the conversation fairly private when needed (versus the wide open &lt;i style="mso-bidi-font-style:normal;"&gt;Ask the Experts&lt;/i&gt;).&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Last year’s WinHEC did not do a good job: it had five keynotes, and shut down early giving techies only 12 hours of presentations, versus as many as 21 some years.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There were no &lt;i style="mso-bidi-font-style:normal;"&gt;Ask the Experts&lt;/i&gt;, or BOF’s, or a developer lounge.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Unfortunately, there is no sign this will change in 2008.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Much of the problem is that it seems that Microsoft figures that WinHEC’s don’t need to be techie when they do not have a lot of new technology to present.&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;It is time for the techies to take back WinHEC.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;After all, it is supposed to be an &lt;i style="mso-bidi-font-style:normal;"&gt;engineering&lt;/i&gt; conference.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It should be easy to add back the &lt;i style="mso-bidi-font-style:normal;"&gt;Ask the Experts&lt;/i&gt;, BOF’s and a developer lounge.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;On the technical side, there is nothing wrong with their presenting new things, but I believe most of the community would also be interested in some deep drill-downs on existing technologies. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;As a bonus, being able to give input for improvement on existing technologies could improve the quality of drivers for all of us.&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;For deep drill-downs, may I suggest we have multi-hour looks at subsystems like the memory manager and the I/O manager?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;How about having feedback discussions for some of the technologies that do not thrill developers, for instance DTM, WPP/ETW and the lack of support for things that cause some dev’s to hook?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;Come on Microsoft, last year’s WinHEC was poorly attended and technically boring.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The above suggestions on information to present touches on just a few items, and I am sure the developer community can add many more.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are plenty of topics that would excite developers and make the conference the event the place to be.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;But, without a change in direction, I think most of us in the driver community will stay away from “Los Angeles, the land of fruits, nuts and lousy conferences”&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1469317" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/WinHEC/default.aspx">WinHEC</category></item><item><title>I'm Back</title><link>http://msmvps.com/blogs/windrvr/archive/2008/01/18/i-m-back.aspx</link><pubDate>Fri, 18 Jan 2008 21:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1469315</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=1469315</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2008/01/18/i-m-back.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;After a hectic fall of consulting, I have dug out enough to continue this blog.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1469315" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category></item><item><title>Improving the documentation</title><link>http://msmvps.com/blogs/windrvr/archive/2007/08/28/improving-the-documentation.aspx</link><pubDate>Tue, 28 Aug 2007 18:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1144076</guid><dc:creator>DonBurn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=1144076</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/08/28/improving-the-documentation.aspx#comments</comments><description>&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;If you haven’t heard, Microsoft is now updating the WDK documentation monthly and is now providing a way to download these updated docs to your computer.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This update, just for documentation, can be found at &lt;/font&gt;&lt;a href="http://www.microsoft.com/whdc/DevTools/WDK/WDKdocs.mspx"&gt;&lt;font size="3"&gt;http://www.microsoft.com/whdc/DevTools/WDK/WDKdocs.mspx&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Microsoft should be congratulated for this effort to improve the documentation in a timely manner.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;Currently there are some flaws to be aware of.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;First the install process does not take into account that many of us would just like to update the documentation we got with the WDK with the new docs.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In fact, the installer does not even know about the WDK installation, and provides no way to update the documentation.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I find that the installation of the WDK’s and its documentation are the least friendly parts of the product.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;After several attempts to install the updates, I finally pulled the doc files out of the underlying CAB file and put them in the help directory of the WDK where they belong.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;The second problem is that the documentation does not have a feedback link so you can send in bug reports.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This will be corrected in the next version, but for now the feedback alias is &lt;span style="mso-bidi-font-weight:bold;"&gt;&lt;a href="mailto:ddksurv1@microsoft.com"&gt;ddksurv1@microsoft.com&lt;/a&gt;. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Having a well documented feedback alias is significant.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Those who have been in the industry awhile may remember that when OSR hosted the documentation bug finding contest, the quality of the documentation went up significantly.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;span style="mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;span style="mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;span style="mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&lt;span style="mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;mso-bidi-font-weight:bold;"&gt;&lt;font size="3"&gt;With all the new material in the documentation, there are errors.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Now that there is a mechanism for providing feedback, and with frequent updates, we have a chance to fix these problems.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Let’s roll up our sleeves and get to it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I am going to cut this entry short so I can send some mail about the technical mistakes I know of in the doc set.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1144076" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Coding Guidelines</title><link>http://msmvps.com/blogs/windrvr/archive/2007/06/24/coding-guidelines.aspx</link><pubDate>Sun, 24 Jun 2007 23:59:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:985546</guid><dc:creator>DonBurn</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=985546</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/06/24/coding-guidelines.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;When I get a new client, I ask for a copy of their driver coding guidelines.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Typically I get one of several responses.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;We trust our developers to do the right thing.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;The last time we brought this up there was almost open revolt.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;They hand me a corporate standard for coding applications, most of which is worthless for drivers.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt;TEXT-INDENT:0in;mso-list:none;tab-stops:.5in;"&gt;&lt;font size="3"&gt;Whether companies recognize it or not, they need a set of coding guidelines for drivers.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are a lot of ways of doing things in drivers that can cause problems, and a good set of guidelines can help.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Consider some of the following areas:&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;C++ - &lt;/b&gt;There can be an argument for this in many cases, but if C++ is used for drivers, there needs to be limits placed upon the language for it to work in the kernel.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Undocumented or unusual routines – &lt;/b&gt;What is your company’s policy on the use of undocumented kernel interfaces?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;What about routines not normally used in the kernel, but documented for user space?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;How about functions from the IFS kit for a regular driver?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are a lot decisions to make here.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;WDM, WDF or 3&lt;sup&gt;rd&lt;/sup&gt; party toolkits – &lt;/b&gt;What is your policy on drivers: &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;should they be the traditional WDM model, the new WDF models or a 3&lt;sup&gt;rd&lt;/sup&gt; party model?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Development Environment – &lt;/b&gt;What do you require for a development environment?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This should be simple; namely a specific version of the DDK/WDK, but if you don’t spec it you can get anything.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Windows Logo –&lt;/b&gt; Do you want your drivers to have a Windows Logo?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This impacts the routines, models, and methodology for developing drivers.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Static Verification tools – &lt;/b&gt;What is your policy on code passing static and dynamic verification tools?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do you require code to be PREfast clean?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Does your code need to run through Static Driver Verifier?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do you require annotations to aid the above tools in finding bugs?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do you use PC-Lint and do you have your own definitions file?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Testing – &lt;/b&gt;Does the code need to pass Driver Verifier?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For Server 2003, does your code need to pass Call Usage Verifier? Is there a code coverage tool and standards to be met?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;What other tests are required?&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Diagnostics – &lt;/b&gt;What is your model for tracing and debug prints?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do you require event logging?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do you expect data to be presented to the performance monitor?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Is there information going to Windows Management Instrumentation?&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Coding style –&lt;/b&gt; This is the one that causes the biggest fights.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You should probably not be dictating the location of braces or indentation, but there are things that make code easier to review or for the next person to work on it.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt; &lt;/blockquote&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt;TEXT-INDENT:0in;mso-list:none;tab-stops:.5in;"&gt;&lt;font size="3"&gt;The above is not a complete list, but even more needs to be considered. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;If you do not have the resources in-house, consider engaging a consultant to develop the guidelines based on your current practice.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt;TEXT-INDENT:0in;mso-list:none;tab-stops:.5in;"&gt;&lt;font size="3"&gt;You do not want to end up like one firm I know that hired a contractor to develop a driver.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When the driver was delivered, the company discovered the contractor had used a toolkit the firm did not own and would cost over $100,000 to buy for the developers and train them on.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The choice between slipping the product schedule and buying the tool was not a pleasant one.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;With some preparation up front in specifying coding guidelines, such scenarios can be prevented and time and money saved in the end.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=985546" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Driver+Design/default.aspx">Driver Design</category></item><item><title>Tag, you're it</title><link>http://msmvps.com/blogs/windrvr/archive/2007/06/15/tag-you-re-it.aspx</link><pubDate>Fri, 15 Jun 2007 23:31:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:965502</guid><dc:creator>DonBurn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=965502</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/06/15/tag-you-re-it.aspx#comments</comments><description>&lt;p&gt;I’ve been spending the last couple of days tracking down a bug in a driver I am writing. The effort reminded me of how great tags on memory allocations and frees can be. Also, the work reminded me that there are at least a couple of features Microsoft does not promote and I rarely see. &lt;/p&gt;
&lt;p&gt;For the uninitiated, tags are a four character value that is passed as an argument in memory allocation calls. The tag gives you a way to identify what the memory was allocated for by having a different tag for each common structure allocated. Here is a common problem: many driver developers commonly assume that they have only one tag for their whole driver because so many of the common samples do this. There is nothing stopping you from having multiple tags, and in fact there is a strong reason to have them. &lt;/p&gt;
&lt;p&gt;Right now I am developing a file system mini-filter that has twenty-one different tags it uses for allocations. All the major buffer types and context blocks each have a unique tag for their allocations and frees. &lt;/p&gt;
&lt;p&gt;Yes, I said frees. Part of the reason to have multiple tags is that you can also put the tag on the free of the memory by using the call ExFreePoolWithTag. Unfortunately, this call has been described as worthless in Walter Oney’s Programming the Windows Driver Model and is incorrectly documented by Microsoft. &lt;/p&gt;
&lt;p&gt;The value of ExFreePoolWithTag is when you combine it with a tag with the PROTECTED_POOL bit set. This bit requires that you free the memory with ExFreePoolWithTag, and the OS will bug check if the memory being freed does not have the matching tag. Unfortunately, PROTECTED_POOL is not documented except in include files, and is not used by any Microsoft sample. Using ExFreePoolWithTag with PROTECTED_POOL tags gives you an automatic check that you are freeing what you intended to. &lt;/p&gt;
&lt;p&gt;You do have to be careful on memory you allocate that the system will be freeing, since Windows will not know what tag you are using, so the system frees everything without tags. For everything except the rare instance where the system frees the memory, using multiple tags with PROTECTED_POOL is worthwhile. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=965502" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Diagnostics/default.aspx">Diagnostics</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Driver+Design/default.aspx">Driver Design</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Document explorer versus useful data</title><link>http://msmvps.com/blogs/windrvr/archive/2007/05/30/document-explorer-versus-useful-data.aspx</link><pubDate>Wed, 30 May 2007 19:21:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:934307</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=934307</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/05/30/document-explorer-versus-useful-data.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;There is a trend in the tools coming out of Microsoft that is driving me nuts and in my opinion significantly hurting productivity.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This trend is the shrinking of the amount of data that appears on the display and requiring more mouse clicks to get there. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;For driver writers this trend is most obvious in Document Explorer 8 which is used to display the Vista WDK documentation.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Comparing it to HTML Help Control 5 that was used for Windows Server 2003 SP1 DDK the previous version will show you what I mean.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;On opening the DDK documentation you have two major panes, the pane on the right goes from the toolbar to the bottom of the window, giving you a large amount of information, on my display (1280x1024) about 60 lines or a full page.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When you open the WDK you see an extra pane on the right, called index results that takes away about 12 lines on my display or roughly 20% less useful data.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Now the second assault on data occurs when you search, with the DDK I get 36 terms on the screen, with the WDK I get 27 or a 25% drop in data.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Worse yet, the search display is now a tabbed window in the data area making toggling between several elements of the search more cumbersome.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Of course index results mentioned previously also make thing more painful, since a large portion of the time you click on a kernel API in the index, instead of seeing the API in the data pane, you see some page about a use of the API, so you have to go down and click the index results to get the API.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;As an example go into the Vista DDK documentation, and choose ZwCreateFile in the index, I doubt most of us are looking for &lt;i style="mso-bidi-font-style:normal;"&gt;“&lt;span style="COLOR:black;"&gt;TDI Kernel-Mode Client Interactions”&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR:black;"&gt; when we look up &lt;/span&gt;ZwCreateFile but that is what we get.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Microsoft is doing all this at the same time that displays are going to wide screen models with 13% less vertical pixels.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All of this adds up to taking longer to get the information needed to develop or check a driver, making it more likely that the implementation will be rushed and unreliable.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;I don’t blame the WDK documentation group, the tool is a corporate standard.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Perhaps the folks who designed and approved this trend have become so used to Power Point that more that six lines of data at a time is too much for them.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Hopefully, Microsoft will wake up to the problem, at the recent WinHEC a feedback session was asked “How do you search for WDK help?” and the overwhelming answer was &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;Google!&lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=934307" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Crossing the Undocumented Line</title><link>http://msmvps.com/blogs/windrvr/archive/2007/05/27/crossing-the-undocumented-line.aspx</link><pubDate>Sun, 27 May 2007 16:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:928577</guid><dc:creator>DonBurn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=928577</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/05/27/crossing-the-undocumented-line.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;As a consultant who has more than once taken on projects Microsoft has said are impossible, many people assume I often use undocumented calls in Windows in my work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In fact, I try to avoid them if at all possible, and am extremely careful in crossing the &lt;i style="mso-bidi-font-style:normal;"&gt;undocumented line.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;A developer should ask a set of questions when considering using an undocumented technique; these are:&lt;/font&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;"&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 6pt;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Is it really needed?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;Before anything else, ask yourself if there is any other way to do this.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Be sure to not constrain your design when you ask this question.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For instance, requiring something be done in the kernel may force an undocumented technique where building a helper application could allow a documented approach.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 6pt;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;How undocumented is it?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;There is a lot of variation here; there are plenty of undocumented calls that are never mentioned by Microsoft.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These I consider pretty undocumented even if there are examples on the web.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;font size="3"&gt;There are calls that have been in the Microsoft DDK include files for years, but are not documented.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For example, a number of the ZwXXX calls have options that are not described in the documentation, but are in the includes with all the needed data structures.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;font size="3"&gt;Another variant of undocumented is the call that is documented in later OS’s but works for your driver in previous versions.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In the early days of the DDK, there were calls in the samples that were not documented.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These calls are not completely safe, but they are better than the totally undocumented calls.&lt;/font&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;" start="3"&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 6pt;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Which OS’s require the undocumented stuff?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;If you are looking at an undocumented call for an older OS, the function you need in later OS’s is not present, so you are probably safer than expecting a call to be there in the future.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 6pt;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;What is the scope of the input and usage of the undocumented stuff?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;If you are using the undocumented calls in a constrained environment you are in a safer position than a having a widespread and flexible use.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is hard to test any piece of code, but if the inputs or patterns of use vary, the testing of this area just got harder.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 6pt;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;What is the fallback plan? &lt;/b&gt;If you do go ahead and do this, what will you do if it breaks tomorrow?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Has your design kept the undocumented stuff limited so it can be replaced in the code?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Is there likely to be an alternative for the replacement?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;What is the plan if there is no replacement?&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;If you decide you have to cross the line and use an undocumented call, there are some things you should be doing:&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;tab-stops:list .5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Let the customer know &lt;/b&gt;– Document the call and the answers to the above questions to the customer or your management.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Crossing the line should be a decision made by more than just the developer.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt 0.5in;tab-stops:list .5in;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Plan for a long testing cycle &lt;/b&gt;– You have chosen to use something you cannot rely on, so your testing pain just went up.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You really need to test all the likely OS configurations the end user could have.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This means not just testing on the current version of a Windows OS, but instead the base, all service packs, and the &lt;i style="mso-bidi-font-style:normal;"&gt;current version&lt;/i&gt; , i.e., all the latest hotfixes and downloads.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For 32-bit Windows, that is sixteen full tests if you want to support Windows 2000 up to Vista!&lt;/font&gt;&lt;/p&gt;
&lt;p class="Style1" style="MARGIN:0in 0in 6pt;TEXT-INDENT:0in;mso-list:none;tab-stops:.5in;"&gt;&lt;font size="3"&gt;There are times to cross the line, but be sure you have a plan and a strong justification before you enter the undocumented territory.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=928577" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Driver+Design/default.aspx">Driver Design</category></item><item><title>Bleeding edge and far from it</title><link>http://msmvps.com/blogs/windrvr/archive/2007/05/20/bleeding-edge-and-far-from-it.aspx</link><pubDate>Sun, 20 May 2007 17:36:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:915159</guid><dc:creator>DonBurn</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=915159</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/05/20/bleeding-edge-and-far-from-it.aspx#comments</comments><description>&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;I am just back from WinHEC and while there I realized that many people including a number from Microsoft don’t distinguish developing for the leading edge from living there. I am known as a guy who has done a number of things that Redmond had said “Windows is not capable of doing” and technologies that Microsoft was later proud to show off once they were working.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;When it comes to my tools, I am far from the bleeding edge.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For instance, though I recently started using the latest Visual Studio, most of my work is still done with VS6.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I like the new Studio, but I trust VS6 and that version produces code that for the most part needs no libraries other than the standard system lib’s to support it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I use Office XP and probably will not move for a long time, since I once had a terrible experience of not being able to send a customer a promised document, since the conversion back to the format the client was using did not work well.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;I am not alone in this attitude; many of the developers I respect the most stay far away from the leading edge for their work environments.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In this way we are like Seymour Cray, who required that the parts for his designs were in production and testable even though the systems he was designing were years off.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;The challenge here is that Microsoft does not seem to understand this.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The WDK team was proudly pointing out the features and fast updates with online MSDN, when most developers use the local documents.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;One of the new features with the MSDN stuff is a wiki capability that is supposed to be monitored by using an RSS feed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Most of the senior developers I know do not monitor this, since Microsoft’s previous generation of tools do not support RSS!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Another RSS problem is that when Microsoft “improved” its blogging site, it dropped email notification of blog postings, because RSS was available in all the brand new tools.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;Another example from WinHEC was the Windows Driver Testing Framework.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This tool assumes you are using the latest Visual Studio to develop with managed languages using the full strength of COM.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I know of almost no respected driver writers who know how to do this, and even fewer who would want to.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;It has to be confusing for the WDK team because their core product is the exception that proves the rule.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Over the years, the development community has found that BETA and just released versions of the DDK are excellent so we trust using these in our day to day work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately, few other teams in Redmond inspire this confidence. &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:normal;"&gt;&lt;font size="3"&gt;So, Microsoft, if you want us to keep developing on the bleeding edge, give us tools that do not force us to live there.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=915159" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/WinHEC/default.aspx">WinHEC</category></item><item><title>Never stop learning</title><link>http://msmvps.com/blogs/windrvr/archive/2007/05/01/never-stop-learning.aspx</link><pubDate>Tue, 01 May 2007 20:08:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:886629</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=886629</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/05/01/never-stop-learning.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;One thing I always recommend to my customers is to keep their developers up to speed on the latest Windows driver technologies.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I’m thinking about this right now, since last week saw the release of &lt;i style="mso-bidi-font-style:normal;"&gt;&lt;a href="http://www.microsoft.com/MSPress/books/10512.aspx"&gt;Developing Drivers with Windows Driver Foundation&lt;/a&gt;&lt;/i&gt; and we are less than two weeks away from the start of this year’s WinHEC.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;It is scary how many managers and developers believe that they don’t need to know this new stuff.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Even if you are still required to do drivers for NT 4.0 (hopefully &lt;i style="mso-bidi-font-style:normal;"&gt;not&lt;/i&gt;), learning the new stuff can improve your code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Just seeing where Microsoft has put its effort to improve things may suggest to you places in your code you need to review and improve. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Also, just because you can’t use the latest Windows versions does not mean you cannot use the latest tools.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I had a customer a few years ago who had been chasing a bug for around six months.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;I used PREfast on the code and found the bug in the legacy driver in a couple of minutes!&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Yes, you can in theory learn this stuff from the Windows Driver Kit documentation, but that is the hard way to do it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are a lot of great papers on &lt;/font&gt;&lt;a href="http://www.microsoft.com/whdc/default.mspx"&gt;&lt;font size="3"&gt;Windows Driver and Hardware Central&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; and at &lt;/font&gt;&lt;a href="http://www.osronline.com/"&gt;&lt;font size="3"&gt;OSR Online&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; .&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;I check them weekly to see what is new.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The challenge for papers and documentation is to know how to approach all the information.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;That is where a book, WinHEC, or one of the excellent classes offered on Windows drivers can help.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;This year will be my 10&lt;sup&gt;th&lt;/sup&gt; WinHEC, and at every one of them I have learned something new that I now apply to my work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;More importantly, WinHEC is a chance to meet many of the experts in the field. You don’t want to abuse this, but it is extremely useful to be able to drop an email to an expert and ask a question.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;People ask on forums, “What book should I get to learn device drivers? “&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The real answer is, &lt;i style="mso-bidi-font-style:normal;"&gt;all&lt;/i&gt; of them.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Looking up at my bookshelf, I see 17 books on Windows internals and drivers, including each version of some books.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This does not count all the class notes, the booklets from WinHEC, and many years of OSR’s &lt;i style="mso-bidi-font-style:normal;"&gt;NT Insider&lt;/i&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It also does not count the draft of the excellent WDF book I mentioned in the first paragraph.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I was a technical reviewer of the book and cannot wait to get my hands on the production version.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;I’ve been writing drivers and system software for 35 years, and it surprises some of my clients when I mention I’ve taken five classes on Windows driver development.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These clients think if you’ve written drivers before, you only have to tweak what you know.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Nope.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Windows is an incredibly rich development environment for drivers, and there is a lot to learn.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Right now if I had the time, I would like to sign up for a couple of classes from OSR and a couple from Azius, about Windows driver development, because there are areas I know I could learn more about.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 6pt;"&gt;&lt;font size="3"&gt;Never stop the learning process for yourself or your developers.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If you do, you are crippling your product’s capabilities and/or time to market, and your future employability as a developer.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=886629" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/WinHEC/default.aspx">WinHEC</category></item><item><title>How tuned is your time machine?</title><link>http://msmvps.com/blogs/windrvr/archive/2007/04/27/how-tuned-is-your-time-machine.aspx</link><pubDate>Fri, 27 Apr 2007 17:03:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:880865</guid><dc:creator>DonBurn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=880865</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/04/27/how-tuned-is-your-time-machine.aspx#comments</comments><description>&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;How tuned is your time machine?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;No, I am not talking about DeLoreans with Flux Capacitors, but a tool almost all software development groups have but many use poorly, namely &lt;i style="mso-bidi-font-style:normal;"&gt;source control&lt;/i&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A simple test of how well your source control system is doing is to see how many times a day the average developer checks in code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The sad fact is that in most development shops I encounter, the time a file is checked out is measured in weeks—as for a library book.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;Driver development can benefit greatly from a source control system that encourages its use.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is amazing how many times I hear “It was working, I must have changed something to break it.”&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you use source control all the time, it is easy to back up to prove things worked, find the version with the set of changes that broke things, and quickly resolve the problem.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;For a manager, frequent source control is beneficial to scheduling since it gives you concrete data on the state of the work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Statements from developers, “I’m 80% of the way done” do not mean anything.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Is this 80% coded, tested or what?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Instead, “The current checked in version supports these capabilities and passes these tests” gives you a solid basis for scheduling and for knowing a project’s status.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;Source control gets out of &lt;i style="mso-bidi-font-style:normal;"&gt;tune&lt;/i&gt; for two major reasons, either the system is cumbersome to use, or developers ignore it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Many source control systems become cumbersome because release engineering owns them and requires additional input and checks since &lt;i style="mso-bidi-font-style:normal;"&gt;every&lt;/i&gt; &lt;i style="mso-bidi-font-style:normal;"&gt;check in is part of the release&lt;/i&gt;!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately, this approach is wrong because developers need to be able to check in often, and that includes versions with diagnostics that will never go into production.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;If you are a manager stuck with cumbersome source control, consider setting up your own with something like SourceSafe.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Having two source control systems may mean that you as the manager need to take a stable version out of the lightweight system and check into the release system periodically, but having the history of changes I am talking about is worth it.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;There also needs to be an environment that encourages checking in often.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The common developer model of “I’ve checked it out, I’ll check it in when all the modifications to the module work”, has to be changed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Encouraging developers to check in after every change can be a challenge.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Showing the value of frequent revisions for debugging will help.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For a manager, looking at what goes into a revision and encouraging incremental revisions is also needed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Finally, consider using a source control system where only one developer can have the file checked out at a time.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;This not only creates an internal push to finish the change and check it in, but also eliminates the error-prone merge steps in systems that allow multiple checkouts.&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:Arial;"&gt;&lt;font size="3"&gt;Encouraging incremental revisions of the code, and using source control wisely is one of the best ways to improve quality and find bugs in drivers.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When you are checking your code in often, it is easy to step into your time machine and track down the bugs.&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=880865" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Where was Don?</title><link>http://msmvps.com/blogs/windrvr/archive/2007/04/27/where-was-don.aspx</link><pubDate>Fri, 27 Apr 2007 16:55:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:880855</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=880855</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/04/27/where-was-don.aspx#comments</comments><description>&lt;p&gt;I haven&amp;#39;t posted for quite a while since I hit a period of intense work for my customers, demands by activities outside of work, and a cold/flu that has persisted for over a month.&amp;nbsp; I am back and expect to see postings from me on at least a weekly basis.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=880855" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category></item><item><title>Tuning Channel 9</title><link>http://msmvps.com/blogs/windrvr/archive/2007/03/01/tuning-channel-9.aspx</link><pubDate>Fri, 02 Mar 2007 01:06:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:631492</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=631492</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/03/01/tuning-channel-9.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;Last week I got an announcement that Rob Short is talking on &lt;I style="mso-bidi-font-style:normal;"&gt;Operating System Evolution (&lt;/I&gt;see &lt;/FONT&gt;&lt;A href="http://channel9.msdn.com/Showpost.aspx?postid=264874"&gt;&lt;FONT size=3&gt;http://channel9.msdn.com/Showpost.aspx?postid=264874&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;)&lt;I style="mso-bidi-font-style:normal;"&gt;.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/I&gt;Normally, I would be the first in line for one of his talks, but on Channel 9?… well, maybe some day I’ll watch it when I have time. &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;For those of you who don’t know about Channel 9 &lt;/FONT&gt;&lt;A href="http://channel9.msdn.com/"&gt;&lt;FONT size=3&gt;http://channel9.msdn.com/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; , it is a site where Microsoft provides video interviews on technical subjects.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;The reason that I’m not enthusiastic about it is that I believe there are a couple of serious problems with Channel 9.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;These are:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;1. There is no index&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;FONT size=3&gt;I answer a lot of questions for my customers and on Usenet, but much of the time I do not remember the exact answer, just where to find it.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;A typical Channel 9 presentation is close to an hour, and with no index this means that if I think something &lt;I style="mso-bidi-font-style:normal;"&gt;might&lt;/I&gt; be in a presentation, I have to waste a lot of time looking for it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;FONT size=3&gt;I do use the WinHEC videos, but they have an index, namely the PowerPoint slides that go with the talk.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;I have all the WinHEC slides from the last 10 years, and I still reference one of the old presentations every few months.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;2. There is no way to take notes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;FONT size=3&gt;Those PowerPoint slides from WinHEC have another great feature.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;They allow me to put notes in the speaker notes area.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;When I listen to the talk I take notes, and depending on the data, I will annotate the PowerPoint file.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Also, I have found that it is a nice way to keep notes about using a technique presented in a talk.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;So Redmond, how about fixing Channel 9?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Right now I view Channel 9 as entertainment more than as a useful reference tool.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;How about some PowerPoint slides or even just some speaker notes to go with the presentation?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;But even there, Hollywood does better with their entertainment.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Since even my &lt;I style="mso-bidi-font-style:normal;"&gt;Jurassic Park&lt;/I&gt; DVD has a chapter index, why doesn’t Channel 9 have an index? You bill Channel 9 as an important information tool. There is no reason it has to be such a dinosaur!&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=631492" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Microsoft/default.aspx">Microsoft</category></item><item><title>Using the event log in your driver</title><link>http://msmvps.com/blogs/windrvr/archive/2007/02/19/using-the-event-log-in-your-driver.aspx</link><pubDate>Mon, 19 Feb 2007 22:02:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:599084</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=599084</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/02/19/using-the-event-log-in-your-driver.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;I wrote previously that drivers should use the event log.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;This time I am going to give some things to consider when using events. The challenge for using the event log is that many components use it poorly.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The two common problems are superfluous messages and lazy definitions.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;The event log is commonly configured as a circular log with a limited capacity.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus, having a bunch of superfluous messages can cause the important events that lead up to a failure to be lost. If you want to put in things like the driver started or stopped, provide a registry value or other control so these can be disabled.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;The second problem, lazy definitions, happens because building the message catalog where the event strings are stored and setting up the registry for it require additional steps.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Developers looked around and found that a number of the common Microsoft error codes took a string for the log entry, and decided to use the Microsoft definition instead of their own.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;This is a poor approach for two reasons.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;First, since all your errors are coded as the same event, this makes it hard for tools to look for problems in the log.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Second, the event log is designed for internationalization but the strings you dump from your driver will all be in one language.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;For internationalization, consider making the message catalog where the text of the messages resides a separate file, rather than including it in the device driver.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The advantage of this is that you can provide the components needed for a support organization to add a new language without having to sign the driver again.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;So what should go in the event log?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Some obvious things are:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Style1 style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;Failures in DriverEntry, AddDevice and Unload – In all these cases, there is no user request to which to report the problem.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Style1 style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;Resource failures – These include a malfunction in the hardware or supporting software (for instance, a service that supports the driver) that impacts many requests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Style1 style="MARGIN:0in 0in 6pt 0.5in;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;Anomalous behavior – This is anything that is unexpected, whether it fails a request or not.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;If something you really didn’t expect occurs, even if the driver handles it, log it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Style1 style="MARGIN:0in 0in 6pt;TEXT-INDENT:0in;mso-list:none;tab-stops:.5in;"&gt;&lt;FONT size=3&gt;My overall message is that you should add the event log to the diagnostic capabilities you provide your support people and your customers. If you already do this, great!&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;And if you already have working guidelines for event log use, please share them with a comment to this blog.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=599084" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Diagnostics/default.aspx">Diagnostics</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Driver+Design/default.aspx">Driver Design</category></item><item><title>Why your driver should use the event log</title><link>http://msmvps.com/blogs/windrvr/archive/2007/02/18/why-your-driver-should-use-the-event-log.aspx</link><pubDate>Sun, 18 Feb 2007 14:34:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:592884</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=592884</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/02/18/why-your-driver-should-use-the-event-log.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;Do you use the event log in your driver? &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;Event logging should be standard in almost every driver, yet few drivers support logging.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Event logging is the place to record anomalous conditions and events that are detected by your code. Specifically, it is the recognized way to report errors that are not related to a particular request to the device.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;The event log consists of small records about events of interest.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The record is based on an NTSTATUS code, whether it is a standard code or a custom status code for your software.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Think of the event log as a series of alerts to inform you of what is happening on the system.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;If you haven’t looked at it lately, open the event viewer from &lt;I style="mso-bidi-font-style:normal;"&gt;Administrative Tools, &lt;/I&gt;and look at the entries since the last boot of your machine.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;There are articles for developers that contend that no one reads the event log.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Yes, the normal user does not look at it, but system administrators certainly do.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;When there is a problem with a system, the event log is the first place admins will look to establish a chronology of what happened and possibly see what failed.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The event log is also integrated into many network management tools that administrators use to monitor system health.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;So why don’t more drivers use the event log?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Part of the reason for this is Microsoft.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The DDK used to provide a specific sample to illustrate logging, but this was removed years ago.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Worse, some Microsoft developers do not understand the use of the event log.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;A few years ago a Microsoft talk confused the purpose of Event Logging with the more recent Event Tracing for Windows (ETW).&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;ETW is a great capability, but it is designed to provide detailed diagnostics for the developer, not simple alerts for the administrator.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;So if you are not using the event log in your drivers, ask yourself or your developers, why aren’t you?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;If you are using the event log, there are a number of things to consider, but that needs to wait for another post.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=592884" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Diagnostics/default.aspx">Diagnostics</category><category domain="http://msmvps.com/blogs/windrvr/archive/tags/Driver+Design/default.aspx">Driver Design</category></item><item><title>Welcome</title><link>http://msmvps.com/blogs/windrvr/archive/2007/02/10/welcome.aspx</link><pubDate>Sat, 10 Feb 2007 16:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:562599</guid><dc:creator>DonBurn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/windrvr/rsscomments.aspx?PostID=562599</wfw:commentRss><comments>http://msmvps.com/blogs/windrvr/archive/2007/02/10/welcome.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;What?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Another&lt;/I&gt; blog on Windows Device Driver Development?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;While there are a number of good blogs out there on the subject, I think mine will be a little different.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;This blog will look at the &lt;I style="mso-bidi-font-style:normal;"&gt;process&lt;/I&gt; of device driver development.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;A lot of the emphasis will be upon the design and development practices for creating a high quality Windows device driver.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;While there will inevitably be some nitty-gritty technical stuff, most of my discussion will be targeted at a level that managers can follow.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;In fact, I hope that you will point your management to the blog.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Many of the problems in driver development are caused by&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;the failure of management and marketing to appreciate the challenges and constraints of working in the kernel.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;I should warn you though, that many of the problems are also caused by developers who do not follow well-known good practices.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;This blog will discuss ways that managers, developers and Microsoft impact the quality of Windows drivers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;My background includes thirty-six years of developing device drivers.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;I have worked on a number of operating system teams, as well as on compilers and other system software.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;I am fanatical about driver quality--having been the software architect for a fault tolerant computer company.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Before you think “&lt;I style="mso-bidi-font-style:normal;"&gt;my driver won’t need that&lt;/I&gt;”, consider that the first driver I was paid to develop back in college for use by a graphics design class, ended up being used to display images for surgeons during heart operations!&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;So never assume you driver will not be critical code.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 6pt;"&gt;&lt;FONT size=3&gt;In any event, welcome and I hope you enjoy the posts.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=562599" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/windrvr/archive/tags/General/default.aspx">General</category></item></channel></rss>