remove internal files
[ipfw-google.git] / original_passthru / passthru.htm
diff --git a/original_passthru/passthru.htm b/original_passthru/passthru.htm
deleted file mode 100644 (file)
index ee23278..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"\r
-xmlns:o="urn:schemas-microsoft-com:office:office"\r
-xmlns:w="urn:schemas-microsoft-com:office:word"\r
-xmlns:st1="urn:schemas-microsoft-com:office:smarttags"\r
-xmlns="http://www.w3.org/TR/REC-html40">\r
-\r
-<head>\r
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">\r
-<meta name=ProgId content=Word.Document>\r
-<meta name=Generator content="Microsoft Word 10">\r
-<meta name=Originator content="Microsoft Word 10">\r
-<link rel=File-List href="passthru_files/filelist.xml">\r
-<title>passthru</title>\r
-<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"\r
- name="place"/>\r
-<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"\r
- name="PlaceType"/>\r
-<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"\r
- name="PlaceName"/>\r
-<!--[if gte mso 9]><xml>\r
- <w:WordDocument>\r
-  <w:SpellingState>Clean</w:SpellingState>\r
-  <w:GrammarState>Clean</w:GrammarState>\r
-  <w:Compatibility>\r
-   <w:UseFELayout/>\r
-  </w:Compatibility>\r
-  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>\r
- </w:WordDocument>\r
-</xml><![endif]--><!--[if !mso]><object\r
- classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>\r
-<style>\r
-st1\:*{behavior:url(#ieooui) }\r
-</style>\r
-<![endif]-->\r
-<style>\r
-<!--\r
- /* Font Definitions */\r
- @font-face\r
-       {font-family:"MS Mincho";\r
-       panose-1:2 2 6 9 4 2 5 8 3 4;\r
-       mso-font-alt:"\FF2D\FF33 \660E\671D";\r
-       mso-font-charset:128;\r
-       mso-generic-font-family:modern;\r
-       mso-font-pitch:fixed;\r
-       mso-font-signature:-1610612033 1757936891 16 0 131231 0;}\r
-@font-face\r
-       {font-family:Verdana;\r
-       panose-1:2 11 6 4 3 5 4 4 2 4;\r
-       mso-font-charset:0;\r
-       mso-generic-font-family:swiss;\r
-       mso-font-pitch:variable;\r
-       mso-font-signature:536871559 0 0 0 415 0;}\r
-@font-face\r
-       {font-family:"\@MS Mincho";\r
-       panose-1:2 2 6 9 4 2 5 8 3 4;\r
-       mso-font-charset:128;\r
-       mso-generic-font-family:modern;\r
-       mso-font-pitch:fixed;\r
-       mso-font-signature:-1610612033 1757936891 16 0 131231 0;}\r
-@font-face\r
-       {font-family:"MS Sans Serif";\r
-       panose-1:0 0 0 0 0 0 0 0 0 0;\r
-       mso-font-charset:0;\r
-       mso-generic-font-family:swiss;\r
-       mso-font-format:other;\r
-       mso-font-pitch:variable;\r
-       mso-font-signature:3 0 0 0 1 0;}\r
- /* Style Definitions */\r
- p.MsoNormal, li.MsoNormal, div.MsoNormal\r
-       {mso-style-parent:"";\r
-       margin:0in;\r
-       margin-bottom:.0001pt;\r
-       mso-pagination:widow-orphan;\r
-       font-size:12.0pt;\r
-       font-family:"Times New Roman";\r
-       mso-fareast-font-family:"Times New Roman";\r
-       color:black;}\r
-h2\r
-       {mso-margin-top-alt:auto;\r
-       margin-right:0in;\r
-       mso-margin-bottom-alt:auto;\r
-       margin-left:0in;\r
-       mso-pagination:widow-orphan;\r
-       mso-outline-level:2;\r
-       font-size:18.0pt;\r
-       font-family:"Times New Roman";\r
-       mso-fareast-font-family:"MS Mincho";\r
-       color:black;\r
-       font-weight:bold;}\r
-h3\r
-       {mso-margin-top-alt:auto;\r
-       margin-right:0in;\r
-       mso-margin-bottom-alt:auto;\r
-       margin-left:0in;\r
-       mso-pagination:widow-orphan;\r
-       mso-outline-level:3;\r
-       font-size:13.5pt;\r
-       font-family:"Times New Roman";\r
-       mso-fareast-font-family:"MS Mincho";\r
-       color:black;\r
-       font-weight:bold;}\r
-h4\r
-       {mso-margin-top-alt:auto;\r
-       margin-right:0in;\r
-       mso-margin-bottom-alt:auto;\r
-       margin-left:0in;\r
-       mso-pagination:widow-orphan;\r
-       mso-outline-level:4;\r
-       font-size:12.0pt;\r
-       font-family:"Times New Roman";\r
-       mso-fareast-font-family:"MS Mincho";\r
-       color:black;\r
-       font-weight:bold;}\r
-a:link, span.MsoHyperlink\r
-       {color:blue;\r
-       text-decoration:underline;\r
-       text-underline:single;}\r
-a:visited, span.MsoHyperlinkFollowed\r
-       {color:purple;\r
-       text-decoration:underline;\r
-       text-underline:single;}\r
-p\r
-       {mso-margin-top-alt:auto;\r
-       margin-right:0in;\r
-       mso-margin-bottom-alt:auto;\r
-       margin-left:0in;\r
-       mso-pagination:widow-orphan;\r
-       font-size:12.0pt;\r
-       font-family:"Times New Roman";\r
-       mso-fareast-font-family:"Times New Roman";\r
-       color:black;}\r
-pre\r
-       {margin:0in;\r
-       margin-bottom:.0001pt;\r
-       mso-pagination:widow-orphan;\r
-       tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;\r
-       font-size:10.0pt;\r
-       font-family:"Courier New";\r
-       mso-fareast-font-family:"Courier New";\r
-       color:black;}\r
-span.SpellE\r
-       {mso-style-name:"";\r
-       mso-spl-e:yes;}\r
-span.GramE\r
-       {mso-style-name:"";\r
-       mso-gram-e:yes;}\r
-@page Section1\r
-       {size:8.5in 11.0in;\r
-       margin:1.0in 1.25in 1.0in 1.25in;\r
-       mso-header-margin:.5in;\r
-       mso-footer-margin:.5in;\r
-       mso-paper-source:0;}\r
-div.Section1\r
-       {page:Section1;}\r
--->\r
-</style>\r
-<!--[if gte mso 10]>\r
-<style>\r
- /* Style Definitions */\r
- table.MsoNormalTable\r
-       {mso-style-name:"Table Normal";\r
-       mso-tstyle-rowband-size:0;\r
-       mso-tstyle-colband-size:0;\r
-       mso-style-noshow:yes;\r
-       mso-style-parent:"";\r
-       mso-padding-alt:0in 5.4pt 0in 5.4pt;\r
-       mso-para-margin:0in;\r
-       mso-para-margin-bottom:.0001pt;\r
-       mso-pagination:widow-orphan;\r
-       font-size:10.0pt;\r
-       font-family:"Times New Roman";}\r
-</style>\r
-<![endif]-->\r
-<meta name=Template content="C:\Program Files\Microsoft Office\Office\html.dot">\r
-<!--[if gte mso 9]><xml>\r
- <o:shapedefaults v:ext="edit" spidmax="3074"/>\r
-</xml><![endif]--><!--[if gte mso 9]><xml>\r
- <o:shapelayout v:ext="edit">\r
-  <o:idmap v:ext="edit" data="1"/>\r
- </o:shapelayout></xml><![endif]-->\r
-</head>\r
-\r
-<body bgcolor=white lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>\r
-\r
-<div class=Section1>\r
-\r
-<h2><a name=MYSAMPLE></a><a name=top></a><span style='mso-bookmark:MYSAMPLE'>\r
-\r
-<!doctype HTML>\r
-\r
-<span style='font-family:Verdana'><! ---------------- Snip Snip ---------------- >PASSTHRU.SYS\r
-- Sample NDIS Intermediate Driver</span></span><span style='font-family:Verdana'><o:p></o:p></span></h2>\r
-\r
-<h3><span style='font-family:Verdana'>SUMMARY<o:p></o:p></span></h3>\r
-\r
-<p><st1:place><st1:PlaceName><span class=SpellE><b><span style='font-family:\r
-  Verdana'>Passthru</span></b></span></st1:PlaceName><b><span style='font-family:\r
- Verdana'> </span></b><st1:PlaceName><b><span style='font-family:Verdana'>Intermediate</span></b></st1:PlaceName><b><span\r
- style='font-family:Verdana'> </span></b><st1:PlaceType><b><span\r
-  style='font-family:Verdana'>Miniport</span></b></st1:PlaceType></st1:place><b><span\r
-style='font-family:Verdana'> Driver<o:p></o:p></span></b></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>The <span class=SpellE>Passthru</span>\r
-sample is a do-nothing pass-through NDIS 5 driver that demonstrates the basic\r
-principles underlying an NDIS Intermediate Miniport (IM) driver. This driver\r
-exposes a virtual adapter for each binding to a real or virtual NDIS adapter.\r
-Protocols bind to these virtual adapters as if they are real adapters. <o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>The <span class=SpellE>Passthru</span>\r
-driver re-packages and sends down all requests and sends submitted to this\r
-virtual adapter. The <span class=SpellE>Passthru</span> driver can be modified\r
-to change the data before passing it along. For example, it could\r
-encrypt/compress outgoing and decrypt/decompress incoming data.<o:p></o:p></span></p>\r
-\r
-<p><span class=SpellE><span style='font-size:10.0pt;font-family:Verdana'>Passthru</span></span><span\r
-style='font-size:10.0pt;font-family:Verdana'> also re-packages and indicates up\r
-all received data and status indications that it receives at its lower\r
-(protocol) edge.<o:p></o:p></span></p>\r
-\r
-<h3><span style='font-family:Verdana'>BUILDING THE SAMPLE<o:p></o:p></span></h3>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Run the <b>build</b>\r
-command from this directory to build the sample\97it creates the binary <span\r
-class=SpellE>Passthru.sys</span>. <o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>To install this driver on\r
-Windows® 2000, use the PASSTHRU sample notification object and <span\r
-class=SpellE>INFs</span>, also found in this DDK.<o:p></o:p></span></p>\r
-\r
-<h3><span style='font-family:Verdana'>INSTALLING THE SAMPLE<o:p></o:p></span></h3>\r
-\r
-<p><span class=SpellE><span style='font-size:10.0pt;font-family:Verdana'>Passthru</span></span><span\r
-style='font-size:10.0pt;font-family:Verdana'> is installed as a service (called\r
-\93<span class=SpellE>Passthru</span> Driver\94 in the supplied <span class=SpellE>INFs</span>/notification\r
-object). To install, follow the steps below.<o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Prepare a floppy disk (or\r
-installation directory) that contains these files: <span class=SpellE>netsf.inf</span>,\r
-<span class=SpellE>netsf_m.inf</span> and <span class=SpellE>passthru.sys</span>.<o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>On the desktop,\r
-right-click the <b>My Network Places</b> icon and choose <b>Properties</b>. <o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Right-click on the\r
-relevant Local Area Connection icon and choose <b>Properties</b>. <o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Click <b>Install</b>,\r
-then <b>Service</b>, then <b>Add</b>, <span class=GramE>then</span> <b>Have Disk</b>.\r
-<o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Browse to the\r
-drive/directory containing the files listed above. Click <b>OK</b>. This should\r
-show \93<span class=SpellE>Passthru</span> Driver\94 in a list of Network Services.\r
-Highlight this and click <b>OK</b>. This should install the <span class=SpellE>Passthru</span>\r
-driver. <o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Click <b>OK</b> or <span\r
-class=GramE><b>Yes</b></span> each time the system prompts with a warning\r
-regarding installation of unsigned files. This is necessary because binaries\r
-generated via the DDK build environment are not signed.<o:p></o:p></span></p>\r
-\r
-<p><span style='font-size:10.0pt;font-family:Verdana'>Two .INF files are needed\r
-rather than one because <span class=SpellE>Passthru</span> is installed both as\r
-a protocol and a miniport.<o:p></o:p></span></p>\r
-\r
-<h3><span style='font-family:Verdana'>CODE TOUR<o:p></o:p></span></h3>\r
-\r
-<h4><span style='font-family:Verdana'>File Manifest<o:p></o:p></span></h4>\r
-\r
-<pre><u>File<span style='mso-tab-count:2'>           </span>Description<o:p></o:p></u></pre><pre><o:p>&nbsp;</o:p></pre><pre><span\r
-class=SpellE>Makefile</span><span style='mso-tab-count:1'>       </span>Used during compilation to create the object and sys files</pre><pre><span\r
-class=SpellE>Miniport.c</span><span style='mso-tab-count:1'>     </span>Miniport related functions of the <span\r
-class=SpellE>passthru</span> driver</pre><pre><span class=SpellE>Netsf.inf</span><span\r
-style='mso-tab-count:1'>      </span>Installation INF for the service (protocol side installation)</pre><pre><span\r
-class=SpellE>Netsf_m.inf</span><span style='mso-tab-count:1'>    </span>Installation INF for the miniport (virtual device installation)</pre><pre><span\r
-class=SpellE>Passthru.c</span><span style='mso-tab-count:1'>     </span><span\r
-class=SpellE>DriverEntry</span> routine and any routines common to the <span\r
-class=SpellE>passthru</span> miniport and protocol </pre><pre><span\r
-class=SpellE>Passthru.h</span><span style='mso-tab-count:1'>     </span>Prototypes of all functions and data structures used by the <span\r
-class=SpellE>Passthru</span> driver</pre><pre>Passthru.htm<span\r
-style='mso-tab-count:1'>   </span>Documentation for the <span class=SpellE>Passthru</span> driver (this file)</pre><pre><span\r
-class=SpellE>Passthru.rc</span><span style='mso-tab-count:1'>    </span>Resource <span\r
-class=GramE>file</span> for the <span class=SpellE>Passthru</span> driver</pre><pre><span\r
-class=SpellE>Precomp.h</span><span style='mso-tab-count:1'>      </span><span\r
-class=SpellE>Precompile</span> header file</pre><pre><span class=SpellE>Protocol.c</span><span\r
-style='mso-tab-count:1'>     </span>Protocol related functions of the <span\r
-class=SpellE>Passthru</span> driver</pre><pre>Sources<span style='mso-tab-count:\r
-2'>        </span>List of source files that are compiled and linked to create the <span\r
-class=SpellE>passthru</span> driver. This can be modified to create binaries that operate on previous Windows versions (e.g. Windows 2000).</pre>\r
-\r
-<h4 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-family:Verdana'>Programming Tour<o:p></o:p></span></h4>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>Basic steps in initializing and\r
-halting of <span class=SpellE>Passthru</span> driver:<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>1) During <span class=SpellE>DriverEntry</span>,\r
-the <span class=SpellE>Passthru</span> driver registers as a protocol and an\r
-Intermediate miniport driver.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>2) Later on, NDIS calls <span\r
-class=SpellE>Passthru\92s</span> <span class=SpellE>BindAdapterHandler</span>, <span\r
-class=SpellE>PtBindAdapter</span>, for each underlying NDIS adapter to which it\r
-is configured to bind.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>3) In the context of <span\r
-class=SpellE>BindAdapterHandler</span> and after successfully opening a binding\r
-to the underlying adapter, the <span class=SpellE>Passthru</span> driver\r
-queries the reserved keyword &quot;<span class=SpellE>UpperBindings</span>&quot;\r
-to get a list of device names for the virtual adapters that this particular\r
-binding is to expose. Since this driver implements a 1:1 relationship between\r
-lower bindings and virtual adapters, this list contains a single name. \93<span\r
-class=SpellE>Mux</span>\94 IM drivers that expose multiple virtual adapters over\r
-a single underlying adapter will process multiple entries in <span\r
-class=SpellE>UpperBindings</span>.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>4) For each device name, the <span\r
-class=SpellE>Passthru</span> driver calls <span class=SpellE>NdisIMInitializeDeviceInstanceEx</span>.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>5) In response, NDIS will\r
-eventually call back <span class=SpellE>Passthru</span> miniport\92s <span\r
-class=SpellE>MiniportInitialize</span> entry point, <span class=SpellE>MPInitialize</span>.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>6) After <span class=SpellE>MPInitialize</span>\r
-successfully returns, NDIS takes care of getting upper-layer protocols to bind\r
-to the newly created virtual adapter(s).<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>7) All requests and sends coming\r
-from upper-layer protocols for the <span class=SpellE>Passthru</span> miniport\r
-driver are repackaged and sent down to NDIS, to be passed to the underlying\r
-NDIS adapter.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>8) All indications arriving from\r
-bindings to an underlying NDIS adapter are forwarded up as if they generated\r
-from <span class=SpellE>Passthru\92s</span> virtual adapters.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>9) NDIS calls the <span\r
-class=SpellE>Passthru</span> driver\92s <span class=SpellE>ProtocolUnbind</span>\r
-entry point to request it to close the binding between an underlying adapter\r
-and <span class=SpellE>Passthru</span> protocol. In processing this, the <span\r
-class=SpellE>Passthru</span> driver first calls <span class=SpellE>NdisIMDeInitializeDeviceInstance</span>\r
-for the virtual adapter(s) representing that particular binding.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>10) NDIS in turn will close all\r
-the bindings between upper-layer protocols and virtual <span class=SpellE>Passthru</span>\r
-adapter.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>11) After all the bindings are\r
-closed, NDIS calls the <span class=SpellE>Passthru</span> driver\92s <span\r
-class=SpellE>MiniportHalt</span> entry point (<span class=SpellE>MPHalt</span>)\r
-for the virtual adapter.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>12) The <span class=SpellE>Passthru</span>\r
-protocol then closes the binding to the underlying adapter by calling <span\r
-class=SpellE>NdisCloseAdapter</span>, and completes the unbind request issued\r
-in step 9.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>13) <b>Handling Power Management</b><o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>13.1 During initialization, the <span\r
-class=SpellE>Passthru</span> miniport should set the Attribute '<i>NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND</i>'\r
-in its call to <span class=SpellE>NdisMSetAttributesEx</span>. <o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>13.2 When the <span class=SpellE>Passthru</span>\r
-miniport is requested to report its Plug and Play capabilities\r
-(OID_PNP_CAPABILITIES), the <span class=SpellE>Passthru</span> miniport must\r
-pass the request to the underlying miniport. If this request succeeds, then the\r
-<span class=SpellE>Passthru</span> miniport should overwrite the following\r
-fields before successfully completing the original request: <o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>NDIS_DEVICE_POWER_STATE<span\r
-style='mso-tab-count:1'>          </span><span class=SpellE>MinMagicPacketWakeUp</span>\r
-= <span class=SpellE>NdisDeviceStateUnspecified</span>;<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>NDIS_DEVICE_POWER_STATE<span\r
-style='mso-tab-count:1'>          </span><span class=SpellE>MinPatternWakeUp</span>=\r
-<span class=SpellE>NdisDeviceStateUnspecified</span>;<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>NDIS_DEVICE_POWER_STATE<span\r
-style='mso-tab-count:1'>          </span><span class=SpellE>MinLinkChangeWakeUp</span>=<span\r
-class=SpellE>NdisDeviceStateUnspecified</span><o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>If the miniport below the <span\r
-class=SpellE>Passthru</span> protocol fails this request, then the status that\r
-was returned should be used to respond to the original request that was made to\r
-the <span class=SpellE>Passthru</span> miniport. <o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>13.3 OID_PNP_SET_POWER and OID_PNP_QUERY_POWER\r
-should not be passed to the miniport below the <span class=SpellE>Passthru</span>\r
-protocol, as those <span class=SpellE>miniports</span> will receive independent\r
-requests from NDIS.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>13.4 NDIS calls the <span\r
-class=SpellE>Passthru</span> driver\92s <span class=SpellE>ProtocolPnPEvent</span>\r
-entry point (<span class=SpellE>PtPnPHandler</span>) whenever the underlying adapter\r
-is transitioned to a different power state. If the underlying adapter is\r
-transitioning to a low power state, the IM driver should wait for all\r
-outstanding sends and requests to complete.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>14) <b>NDIS 5.1 Features</b><o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>14.1 All NDIS 5.1 features in <span\r
-class=SpellE>Passthru</span> are identified by #<span class=SpellE>ifdef</span>\r
-NDIS51 compiler directives. The following major features are illustrated (refer\r
-to the DDK documentation for more information on these):<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><b><span\r
-style='font-size:10.0pt;font-family:Verdana'>Packet stacking</span></b><span\r
-style='font-size:10.0pt;font-family:Verdana'>: this allows an IM driver to\r
-reuse a packet submitted to its protocol or miniport edge to forward data down\r
-(or up) to the adjacent layer.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><b><span\r
-style='font-size:10.0pt;font-family:Verdana'>Canceling Sends</span></b><span\r
-style='font-size:10.0pt;font-family:Verdana'>: <span class=SpellE>Passthru</span>\r
-propagates send cancellations from protocols above it to lower <span\r
-class=SpellE>miniports</span>.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><b><span\r
-style='font-size:10.0pt;font-family:Verdana'>PnP Event Propagation</span></b><span\r
-style='font-size:10.0pt;font-family:Verdana'>: <span class=SpellE>Passthru</span>\r
-propagates PnP events arriving at its protocol (lower) edge to higher layer\r
-protocols that are bound to its virtual adapter.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-class=SpellE><b><span style='font-size:10.0pt;font-family:Verdana'>NdisQueryPendingIOCount</span></b></span><span\r
-style='font-size:10.0pt;font-family:Verdana'>: <span class=SpellE>Passthru</span>\r
-uses this new API to determine if any I/O operations are in progress on its\r
-lower binding.<o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'>15) For Win2K SP2 and <span\r
-class=SpellE>WinXP</span>, the <span class=SpellE>Passthru</span> sample no\r
-longer requires a Notify Object. The Notify Object has been removed. <o:p></o:p></span></p>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:10.0pt;font-family:Verdana'><span\r
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>\r
-\r
-<p align=center style='text-align:center;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a\r
-href="#top"><span style='font-size:10.0pt;font-family:Verdana'>Top of page</span></a><span\r
-style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>\r
-\r
-<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=624\r
- style='width:6.5in;mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in'>\r
- <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes;height:1.5pt'>\r
-  <td style='background:aqua;padding:.75pt .75pt .75pt .75pt;height:1.5pt'>\r
-  <p class=MsoNormal><o:p>&nbsp;</o:p></p>\r
-  </td>\r
- </tr>\r
-</table>\r
-\r
-<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span\r
-style='font-size:7.5pt;font-family:"MS Sans Serif"'>© 1999 Microsoft\r
-Corporation</span><span style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>\r
-\r
-</div>\r
-\r
-</body>\r
-\r
-</html>\r
-\r