windows-nt/Source/XPSP1/NT/net/ndis/uio/uiosample.htm
2020-09-26 16:20:57 +08:00

461 lines
22 KiB
HTML
Raw Permalink Blame History

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 10">
<meta name=Originator content="Microsoft Word 10">
<link rel=File-List href="uiosample_files/filelist.xml">
<title>NDIS connection-less protocol driver sample</title>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:GrammarState>Clean</w:GrammarState>
<w:Compatibility>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Courier;
panose-1:2 7 4 9 2 2 5 2 4 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:3 0 0 0 1 0;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 0 0 0 415 0;}
@font-face
{font-family:"MS Sans Serif";
mso-font-alt:"Times New Roman";
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:auto;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
h2
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:2;
font-size:18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:SimSun;
font-weight:bold;}
h3
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:3;
font-size:13.5pt;
font-family:"Times New Roman";
mso-fareast-font-family:SimSun;
font-weight:bold;}
h4
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:4;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:SimSun;
font-weight:bold;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Verdana;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:blue;
text-decoration:underline;
text-underline:single;}
p
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
pre
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
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;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-font-family:"Courier New";}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:460344179;
mso-list-type:hybrid;
mso-list-template-ids:1661754128 -1479363788 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:.75in;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;}
@list l0:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]-->
</head>
<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
<div class=Section1>
<h2><span style='font-family:Verdana'>NDIS User mode I/O Protocol<o:p></o:p></span></h2>
<p><span style='font-size:10.0pt;font-family:Arial;color:red'>[This is
preliminary documentation and subject to change.]</span><span style='font-size:
10.0pt;font-family:Verdana'><o:p></o:p></span></p>
<h3><span style='font-family:Verdana'>SUMMARY<o:p></o:p></span></h3>
<p><span style='font-size:10.0pt;font-family:Verdana'>This sample demonstrates
a connection-less NDIS 5.0/5.1 protocol driver. The driver supports sending and
receiving raw Ethernet frames using <span class=SpellE>ReadFile/WriteFile</span>
calls from user-mode. It only receives frames with a specific (run-time
configurable) <span class=SpellE>EtherType</span> field. As an NDIS protocol,
it illustrates how to establish and tear down bindings to Ethernet adapters,
i.e. those that export medium type <i>NdisMedium802_3</i>. It shows how to set
a packet filter, send and receive data, and handle plug-and-play events. It
also shows use of the following NDIS 5.1 features/APIs:<o:p></o:p></span></p>
<p style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2;
tab-stops:list .75in'><![if !supportLists]><span style='font-size:10.0pt;
font-family:Verdana;mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:10.0pt;font-family:Verdana'>Canceling
sends<o:p></o:p></span></p>
<p style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2;
tab-stops:list .75in'><![if !supportLists]><span style='font-size:10.0pt;
font-family:Verdana;mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:10.0pt;font-family:Verdana'>NdisQueryPendingIOCount()<o:p></o:p></span></p>
<p><span style='font-size:10.0pt;font-family:Verdana'>The sample works on
Windows 2000, 32-bit and 64-bit platforms, and Windows XP. Both checked and
free builds are available.<o:p></o:p></span></p>
<h3><span style='font-family:Verdana'>BUILDING THE SAMPLE<o:p></o:p></span></h3>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'>From the
Free or Checked Build environment, execute <b>build</b> in the <span
class=SpellE>ndisuio</span> directory. <o:p></o:p></span></p>
<h3><span style='font-family:Verdana'>INSTALLATION<o:p></o:p></span></h3>
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>This
step can be omitted on Windows XP where this driver is installed by default, as
a hidden protocol. <b style='mso-bidi-font-weight:normal'>NOTE </b>that the
functionality present in the in-build version of NDISUIO on Windows XP is
subject to change. Developers should not assume availability of this
functionality for user-mode applications on Windows XP.</span></p>
<p><span style='font-size:10.0pt;font-family:Verdana'>The driver is installed
using the INF file ndisuio.inf, which is provided in the driver directory. In
Network Connections UI, select an adapter and open <b>Properties</b>.<o:p></o:p></span></p>
<p><span style='font-size:10.0pt;font-family:Verdana'>Click <b>Install</b>,
then <b>Protocol</b>, then <b>Add</b>, and then <b>Have disk</b>. Then point to
the location of the .inf and driver.<o:p></o:p></span></p>
<p><span style='font-size:10.0pt;font-family:Verdana'>Select <b>NDIS Usermode
I/O Protocol </b>and click <b>OK</b>. After installing the protocol, copy over
the test application uiotest.exe to a convenient location.<o:p></o:p></span></p>
<h3><span style='font-family:Verdana'>USAGE<o:p></o:p></span></h3>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'>To start
the driver, type<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Net start ndisuio<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'>To stop
the driver, type<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Net stop ndisuio<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'>To test
the driver, run uiotest. For help on usage, run uiotest -?<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<pre style='margin-left:.5in'>usage: UIOTEST [options] &lt;devicename&gt;</pre><pre
style='margin-left:.5in'>options:</pre><pre style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-e: Enumerate devices</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-r: Read</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-w: Write (default)</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-l &lt;length&gt;: length of each packet (default: 100)</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-n &lt;count&gt;: number of packets (defaults to infinity)</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>-m &lt;MAC address&gt; (defaults to local MAC)</pre>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'>Uiotest exercises the IOCTLs
supported by NDISUIO, and sends and/or receives data on the selected device. In
order to use uiotest, the user must have administrative privilege.<o:p></o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal 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
style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt;font-family:
Verdana'>NOTE</span></b><span style='font-size:10.0pt;font-family:Verdana'>: On
Windows XP, uiotest may fail to access devices since other processes could have
open handles to NDISUIO for those devices. To work around this, stop and
restart NDISUIO as shown above. You will be prompted to stop services that
depend on NDISUIO as well.<o:p></o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'>Use the <20>e option to enumerate all
devices to which NDISUIO is bound:<o:p></o:p></span></p>
<pre style='margin-left:.5in'>C:\uio&gt;uiotest -e</pre><pre style='margin-left:
.5in'> 0. \DEVICE\{9273DA7D-5275-4B9A-AC56-68A49D121F1F}</pre><pre
style='margin-left:.5in'><span style='mso-spacerun:yes'><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>- Intel-Based 10/100 Ethernet Card</pre>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>The
following command sends and receives 2 packets on a device</span><span
style='font-size:10.0pt;font-family:Verdana'>). Since these packets are sent to
the local MAC address (default), both packets are received.</span><span
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'> The
device name parameter to uiotest is picked up from the output of uiotest <20>e
(see above).<o:p></o:p></span></p>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></p>
<pre style='margin-left:.5in'>C:\uio&gt;uiotest -n 2 \DEVICE\{9273DA7D-5275-4B9A-AC56-68A49D121F1F}</pre><pre
style='margin-left:.5in'>DoWriteProc: finished sending 2 packets of 100 bytes each</pre><pre
style='margin-left:.5in'>DoReadProc finished: read 2 packets</pre>
<h3 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
style='font-family:Verdana'>TIPS<o:p></o:p></span></h3>
<p class=MsoNormal 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
style='font-size:10.0pt;font-family:Verdana'>With a checked version of
ndisuio.sys, you can control the volume of debug information generated by
changing the variable ndisuioDebugLevel. Refer to debug.h for more information.
<o:p></o:p></span></p>
<h3 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
style='font-family:Verdana'>CODE TOUR<o:p></o:p></span></h3>
<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
style='font-family:Verdana'>File Manifest<o:p></o:p></span></h4>
<pre><b><span style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>Directory: Test</span></b><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><br
style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></pre><pre><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'><o:p>&nbsp;</o:p></span></pre><pre><u><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>File</span></u><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span><u>Description</u><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span><o:p></o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>uiotest.c<span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>User-mode test application<o:p></o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><o:p>&nbsp;</o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><o:p>&nbsp;</o:p></span></pre><pre><b><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>Directory: Sys</span></b><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><br
style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></pre><pre><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'><o:p>&nbsp;</o:p></span></pre><pre><u><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>File</span></u><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span><u>Description</u><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span><o:p></o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>debug.c<span
style='mso-tab-count:2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Routines to aid debugging<o:p></o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>debug.h<span
style='mso-tab-count:2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Debug macro definitions<o:p></o:p></span></pre><pre><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>macros.h<span
style='mso-tab-count:2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Spinlock, event, referencing macros<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>ndisbind.c</span></span></span><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>NDIS protocol entry points to handle binding/unbinding from adapters<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>ndisuio.h</span></span></span><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Data structure definitions<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>ndisuio.inf</span></span></span><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>INF file for installing NDISUIO<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>ntdisp.c</span></span></span><span style='font-size:
9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span style='mso-tab-count:
2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>NT Entry points and dispatch routines for NDISUIO<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>nuiouser.h</span></span></span><span
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>IOCTL and associated structure definitions<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>recv.c</span></span></span><span style='font-size:
9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span style='mso-tab-count:
2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>NDIS protocol entry points for receiving data, and IRP_MJ_READ processing<o:p></o:p></span></pre><pre><span
class=SpellE><span class=GramE><span style='font-size:9.0pt;mso-bidi-font-size:
7.5pt;font-family:Courier'>send.c</span></span></span><span style='font-size:
9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span style='mso-tab-count:
2'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>NDIS protocol routines for sending data, and IRP_MJ_WRITE processing<o:p></o:p></span></pre><pre><span
style='font-size:7.5pt;font-family:Courier'><o:p>&nbsp;</o:p></span></pre>
<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'><span
style='font-size:10.0pt;font-family:Verdana'><a href="#top">Top of page</a> <o:p></o:p></span></p>
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=624
style='width:6.5in;mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in'>
<tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes;height:1.5pt'>
<td style='background:aqua;padding:.75pt .75pt .75pt .75pt;height:1.5pt'>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
</td>
</tr>
</table>
<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
style='font-size:7.5pt;font-family:"MS Sans Serif"'><EFBFBD> Microsoft Corporation
2000</span><span style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>
</div>
</body>
</html>