<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7153888</id><updated>2011-09-18T09:37:40.870-04:00</updated><category term='Installation'/><category term='Welcome'/><category term='Testing'/><title type='text'>Windows Kernel-Mode Networking</title><subtitle type='html'>Musings and notes from the desk of Thomas F. Divine.

Mostly about NDIS and Winsock Kernel...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ndis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ndis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Thomas F. Divine</name><uri>http://www.blogger.com/profile/13727077875538826389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_mjM2gDM9OHQ/S6pLhMjuSEI/AAAAAAAAAAM/H04PBEXxP6Y/S220/ThomasDivine.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7153888.post-8122306920227411433</id><published>2009-03-26T21:12:00.001-04:00</published><updated>2011-08-26T19:59:34.628-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><title type='text'>I Just Wanted to Install My Dam Driver on Windows 7...</title><content type='html'>&lt;div&gt;I have a simple NDIS protocol driver that has worked for years on Windows 2000 through Windows Vista - then along comes Windows 7. To be honest, getting the driver to install seamlessly on Windows 7 took more time than I had planned.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;*** Deprecated Functions ***&lt;/strong&gt;&lt;br /&gt;I've been writing NDIS drivers and related user-mode components since the DOS days. Some code snippets just get mindlessly re-used without being reviewed for years.&lt;br /&gt;&lt;br /&gt;One snippet  was associated with creating a driver service. This one has legacy code that attempted to lock the service controller database using &lt;strong&gt;LockServiceDatabase&lt;/strong&gt; before calling &lt;strong&gt;CreateService&lt;/strong&gt;. Well, on Windows 7 this function is deprecated; it can be called - but it does absolutely nothing. That's not terrible - BUT - the deprecated function never returns success.&lt;br /&gt;&lt;br /&gt;Consequently calling my old code snipped resulted in an infinite loop.&lt;br /&gt;&lt;br /&gt;So, take out that code and get a little further...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;*** Device Object Security ***&lt;/strong&gt;&lt;br /&gt;On Windows 7 it is important to review security descriptors that you may assign to device objects. For example, if in the past yo assigned a NULL DACL to an object, don't expect Windows 7 to ignore it. A NULL DACL basically allows any user (anonymous, guest, authenticated user or administrator) to access the object: No access limitations at all!&lt;br /&gt;&lt;br /&gt;Change that to use a more limited DACL!&lt;br /&gt;&lt;br /&gt;Doron Holan has some notes in his blog at &lt;a href="http://blogs.msdn.com/doronh/archive/2007/10/16/setting-a-security-descriptor-on-a-legacy-device-object.aspx"&gt;http://blogs.msdn.com/doronh/archive/2007/10/16/setting-a-security-descriptor-on-a-legacy-device-object.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In my case I am setting the device security from user-mode by calling &lt;strong&gt;SetServiceObjectSecurity&lt;/strong&gt; and &lt;strong&gt;ConvertStringSecurityDescriptorToSecurityDescriptor&lt;/strong&gt;. The MSDN has a decent example of using the latter to make a limited DACL that makes some sense.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;*** Getting Elevated Privilege ***&lt;/strong&gt;&lt;br /&gt;The NDIS protocol driver is installed using an enhanced version of the &lt;strong&gt;ProtInstall&lt;/strong&gt; utility described on NDIS.com at the URL &lt;a href="http://ndis.com/ndis-general/ndisinstall/programinstall.htm"&gt;http://ndis.com/ndis-general/ndisinstall/programinstall.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The enhancement is basically to set an appropriate security descriptor (discussed above...) on the device object after installing the driver.&lt;br /&gt;&lt;br /&gt;Of course, both calling the &lt;strong&gt;INetCfg&lt;/strong&gt; API to install the driver and calling &lt;strong&gt;SetServiceObjectSecurity&lt;/strong&gt; both require elevated privileges.&lt;br /&gt;&lt;br /&gt;I'm not a Windows Installer SDK whiz and have grown tired of paying for installer tools that do more than I want (and must be updated for a fee with each Windows release). So, I have a simple Windows Installer project built under Visual Studio 2005. The installer installs both the driver(s) and some simple companion applications and support DLLs. This installer simply calls &lt;strong&gt;ProtInstall&lt;/strong&gt; as a CustomAction during the Install and Uninstall phases.&lt;br /&gt;&lt;br /&gt;Of course, these CustomActions must be executed with elevated privilege. Unfortunately, Visual Studio 2005 does NOT provide a way to specify that a CustomAction must be run with elevated privilege. This means that a user cannot simply download the MSI file and install it: The install will fail.&lt;br /&gt;&lt;br /&gt;On Vista I took the easy way out: I required the user to download both the MSI file and the companion Setup.exe file. If the Setup.exe file is executed with elevated privilege, then execution of the MSI will inherit the elevated privilege and the CustomAction (calling &lt;strong&gt;ProtInstall&lt;/strong&gt;...) will succeed.&lt;br /&gt;&lt;br /&gt;But that's a nasty extra step. For Windows 7 I want to eliminate the need to use Setup.exe.&lt;br /&gt;&lt;br /&gt;Fortunately Alek Davis of Intel was kind enough to have blogged about this particular problem. He provides a "bit of advice" (Actually bit 2048 in the CustomAction Type field...) that convinces the MSI installer to require elevated privilege when calling a CustomAction. The post of interest is at &lt;a href="http://alekdavis.blogspot.com/2007/09/deploy-windows-services-on-vista.html"&gt;http://alekdavis.blogspot.com/2007/09/deploy-windows-services-on-vista.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After following his advice use of the extra Setup.exe bootstrapper is no longer necessary.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;*** Summary ***&lt;/strong&gt;&lt;br /&gt;Thanks to having to work with Windows 7:&lt;br /&gt;&lt;br /&gt;1.) My driver installs more cleanly - even on prior Windows versions.&lt;br /&gt;2.) My software is more secure - even on prior Windows versions.&lt;br /&gt;&lt;br /&gt;I'm tired of Windows 7 already. But it has forced me to make improvements and "That's a good thing!" (TM).&lt;br /&gt;&lt;br /&gt;Thomas&lt;div class="blogger-post-footer"&gt;Copyright © 2007
Printing Communications Assoc., Inc. (PCAUSA)
All rights reserved.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7153888-8122306920227411433?l=ndis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndis.blogspot.com/feeds/8122306920227411433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7153888&amp;postID=8122306920227411433' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8122306920227411433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8122306920227411433'/><link rel='alternate' type='text/html' href='http://ndis.blogspot.com/2009/03/i-just-wanted-to-install-my-dam-driver.html' title='I Just Wanted to Install My Dam Driver on Windows 7...'/><author><name>Thomas F. Divine</name><uri>http://www.blogger.com/profile/13727077875538826389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_mjM2gDM9OHQ/S6pLhMjuSEI/AAAAAAAAAAM/H04PBEXxP6Y/S220/ThomasDivine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153888.post-5402432910994777140</id><published>2007-05-31T17:46:00.002-04:00</published><updated>2011-08-26T19:58:35.579-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><title type='text'>Installing NDIS Protocols and Filters Programmatically</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;span xmlns=""&gt;&lt;p&gt;The Windows &lt;strong&gt;INetCfg&lt;/strong&gt; API is used to install NDIS components, and the WDK includes the &lt;strong&gt;BindView&lt;/strong&gt; sample application that illustrates its use.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;BindView&lt;/strong&gt; is a flexible Windows application that can install and uninstall NDIS clients, protocols and services. It is a good tool for use at certain stages of driver development, but can't be easily adapted to support programmatic NDIS component installation.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Windows 2000 DDK includes a command-line tool called &lt;strong&gt;SNetCfg&lt;/strong&gt; which could be used to programmatically install NDIS components if it was fed with the proper arguments. However, &lt;strong&gt;SNetCfg&lt;/strong&gt; was clumsy to use and was a little buggy. It was dropped from later DDK versions in favor the more user-friendly &lt;strong&gt;BindView&lt;/strong&gt; tool.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;What I have found is that if you finally get one simple NDIS component installer (e.g., an installer for the DDK NDISPROT driver) to work the way you want it to, then it is easy to extend that installer to work with other NDIS services and protocols.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Installing the NDISPROT NDIS Protocol Driver Programmatically&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;As a starting point for my own work I wanted a simple tool that would help me understand how to use the &lt;strong&gt;INetCfg&lt;/strong&gt; API to install a single NDIS protocol driver. In addition, I wanted this tool to be callable from a Windows Installer as a Custom Action.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I started with the old &lt;strong&gt;SNetCfg&lt;/strong&gt; application and the current &lt;strong&gt;BindView&lt;/strong&gt; application and made a command-line tool called &lt;strong&gt;ProtInstall&lt;/strong&gt;. I modified the code to allow it to be built under Visual Studio instead of the Windows DDK build environment.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I have posted a page on NDIS.com that describes &lt;strong&gt;ProtInstall&lt;/strong&gt;. It can be found at the URL:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ndis.com/ndis-general/ndisinstall/programinstall.htm"&gt; http://ndis.com/ndis-general/ndisinstall/programinstall.htm &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;That page also includes a link for downloading the &lt;strong&gt;ProtInstall&lt;/strong&gt; source code.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The installer uses hard-coded service and PnP ID strings. These are all defined in the ProtInstall header files, which is intended to be a common header shared between drivers, installers and user-mode applications. So, if changes are made to this one file and referencing components are rebuilt, then they all &lt;em&gt;should&lt;/em&gt; work properly.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ProtInstall works for me. Perhaps it can be of use to some readers as well.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Installing a NDIS 5 Intermediate Filter Drivers&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;This can be done by making a simple modification to the &lt;strong&gt;HrInstallNetComponent&lt;/strong&gt; method in the netcgfapi.cpp module. Simply insure that the IM filter service and the companion IM filter miniport INF files are both copied using &lt;strong&gt;SetupCopyOEMInf&lt;/strong&gt; call.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;That's about it!&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Installing a NDIS 6 Lightweight Filter Driver Programmatically&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Just like installing a NDIS 5 protocol driver…&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Multi-Platform NDIS Protocol and Filter Installers&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Only simple additional modifications are needed to detect the OS and use different service, INF and PnP ID strings for the actual host platform.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Caveat Emptor&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Although I have been using variations of ProtInstall in my own work, some folks have apparently extracted the code and included it within their own applications or services. That's fine with me, but if it doesn't work in a different application or service environment, then it's up to you to determine what's different.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Copyright © 2007
Printing Communications Assoc., Inc. (PCAUSA)
All rights reserved.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7153888-5402432910994777140?l=ndis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndis.blogspot.com/feeds/5402432910994777140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7153888&amp;postID=5402432910994777140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/5402432910994777140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/5402432910994777140'/><link rel='alternate' type='text/html' href='http://ndis.blogspot.com/2007/05/installing-ndis-protocols-and-filters.html' title='Installing NDIS Protocols and Filters Programmatically'/><author><name>Thomas F. Divine</name><uri>http://www.blogger.com/profile/13727077875538826389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_mjM2gDM9OHQ/S6pLhMjuSEI/AAAAAAAAAAM/H04PBEXxP6Y/S220/ThomasDivine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153888.post-8879793397753596338</id><published>2007-05-31T12:43:00.001-04:00</published><updated>2011-08-26T19:58:19.808-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><title type='text'>NDIS Testing 1.00.00.01</title><content type='html'>&lt;div&gt;&lt;span xmlns=""&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;My first post concerns NDIS testing with the new "Driver Test Manager" (DTM), soon to be replaced with the new and improved "Windows Logo Kit". I have been spending more time than I would like re-imaging DTM Clients and sitting in front of the DTM Studio console.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;Here are a few tips that may be obvious to many of you, but you may overlook in haste to get a test submitted:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Update Your DTM Client BIOS&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;When you purchased your DTM Client machine it may have been setting on the shelf for a while and your "brand new" machine may have a BIOS that is out of date. If the machine has been around for a while after you acquired it the BIOS may have gotten even further out of date.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;In addition, if there is a new major operating system release (e.g., Windows Vista…) there may be BIOS fixes that are needed specifically to support the new OS.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;Updating the BIOS may or may not really make any difference, but it is good insurance.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;Finally, if you ask for support for problems related to PnP and power the support representative will often suggest that your problem is a BIOS problem. That still could be the case, but at least you can say that you are testing with the latest BIOS.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Remove Unnecessary Devices&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;Use minimal devices on your DTM Client machine. Install just what you need and nothing more. It's really frustrating to encounter a crash in an unrelated driver in the middle of a three hour test run. It ruins you day unnecessarily.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Use Windows Update on Your DTM Client&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;Examine "All Available Updates" and get the most recent drivers for your system. Insure that there are no banged-out devices in the Device Manager.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Review Network Settings&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;If your DTM Client is multi-homed (i.e., multiple network adapters) carefully examine your network settings. My experience has shown that if your DTM Client/DTM Controller network topology is not robust DTM may make a bad routing choice.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;The effect that I saw when I overlooked this step was that DTM seemed to "run like molasses". Some tests would appear to run very slowly while others would be cancelled by the DTM because of timeout.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;An operation like Preparing DTM Client for Submission would take almost an hour if network settings are messed up and only minutes if settings are OK.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Use a Debugger&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;With the current DTM it is often difficult to identify the actual cause of a test failure. Sometimes you can see the actual problem in the debugger much more easily than you can in the DTM Studio.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;In addition, for some tests involving sleep transitions the debugger gives helpful insight into the state of the system.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Use Reimaging Tools&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;It is almost certain that tests will fail and you will have to start over. (And over, and over…)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;So take a snapshot of your DTM Client image using a tool that can save a complete disk partition as a file.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;You will probably have to re-image more often than you hope… &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;&lt;/p&gt;&lt;h2&gt;Some Advice from WHQL &lt;/h2&gt;&lt;p&gt;The July 16, 2007 issue of the &lt;em&gt;WHQL and Windows Logo Program Newsletter&lt;/em&gt; includes some advice on avoiding test failures. The newsletter can be found at the URL: &lt;/p&gt;&lt;h2&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/whdc/whql/resources/news/WHQLNews_071607.htm"&gt;http://www.microsoft.com/whdc/whql/resources/news/WHQLNews_071607.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;&lt;br /&gt;&lt;h2&gt;Testing NDIS 5 Intermediate Drivers&lt;/h2&gt;&lt;p&gt;As of this date (July, 2007) there is no WHQL/WLK test for NDIS 5 Intermediate drivers. If you want to get a WHQL signature for a NDIS 5 IM driver you must use the "Unclassified" test from the WLK.&lt;/span&gt;&lt;span style="font-family:Georgia;font-size:12;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Copyright © 2007
Printing Communications Assoc., Inc. (PCAUSA)
All rights reserved.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7153888-8879793397753596338?l=ndis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndis.blogspot.com/feeds/8879793397753596338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7153888&amp;postID=8879793397753596338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8879793397753596338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8879793397753596338'/><link rel='alternate' type='text/html' href='http://ndis.blogspot.com/2007/05/ndis-testing-1000001_31.html' title='NDIS Testing 1.00.00.01'/><author><name>Thomas F. Divine</name><uri>http://www.blogger.com/profile/13727077875538826389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_mjM2gDM9OHQ/S6pLhMjuSEI/AAAAAAAAAAM/H04PBEXxP6Y/S220/ThomasDivine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153888.post-8389172196384139757</id><published>2007-05-31T02:19:00.001-04:00</published><updated>2011-08-26T19:57:07.980-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Welcome'/><title type='text'>Welcome</title><content type='html'>&lt;div&gt;&lt;span xmlns=""&gt;&lt;p&gt;I will be using this space to record information about Windows kernel-mode networking topics from time-to-time. I expect the content to range from editorial to tutorial, and will include notes to myself as I research, develop and test different things.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You are welcome to read along.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Thomas F. Divine&lt;br /&gt;&lt;/p&gt;&lt;p&gt;P.S. Since I don't care for SPAM, comments will be moderated.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Copyright © 2007
Printing Communications Assoc., Inc. (PCAUSA)
All rights reserved.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7153888-8389172196384139757?l=ndis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndis.blogspot.com/feeds/8389172196384139757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7153888&amp;postID=8389172196384139757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8389172196384139757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153888/posts/default/8389172196384139757'/><link rel='alternate' type='text/html' href='http://ndis.blogspot.com/2007/05/welcome.html' title='Welcome'/><author><name>Thomas F. Divine</name><uri>http://www.blogger.com/profile/13727077875538826389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_mjM2gDM9OHQ/S6pLhMjuSEI/AAAAAAAAAAM/H04PBEXxP6Y/S220/ThomasDivine.jpg'/></author><thr:total>0</thr:total></entry></feed>
