<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
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="localmon_files/filelist.xml">
<title>LocalMon</title>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PlaceType"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PlaceName"/>
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:Compatibility>
   <w:ApplyBreakingRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if !mso]><object
 classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
<style>
st1\:*{behavior:url(#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @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";
    panose-1:0 0 0 0 0 0 0 0 0 0;
    mso-font-charset:0;
    mso-generic-font-family:swiss;
    mso-font-format:other;
    mso-font-pitch:variable;
    mso-font-signature:3 0 0 0 1 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";}
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:"Times New Roman";}
span.grame
    {mso-style-name:grame;}
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;}
-->
</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 class=SpellE><span style='font-family:Verdana'>LocalMon</span></span><span
style='font-family:Verdana'>: </span><st1:place><st1:PlaceName><span
  style='font-family:Verdana'>Sample</span></st1:PlaceName><span
 style='font-family:Verdana'> </span><st1:PlaceType><span style='font-family:
  Verdana'>Port</span></st1:PlaceType></st1:place><span style='font-family:
Verdana'> Monitor Server DLL<o:p></o:p></span></h2>

<h3><span style='font-family:Verdana'>SUMMARY<o:p></o:p></span></h3>

<p><span style='font-size:10.0pt;font-family:Verdana'>A port monitor DLL is a
user-mode DLL that is responsible for providing a communications path between
the user-mode print spooler and the kernel-mode port drivers that access I/O
port hardware. Please refer to the DDK documentation for further information about
print monitors. <o:p></o:p></span></p>

<p><span style='font-size:10.0pt;font-family:Verdana'>This sample runs on the <span
class=GramE><span class=grame>x86 platform</span></span> and the code is 64-bit
compliant. <o:p></o:p></span></p>

<h3><span style='font-family:Verdana'>BUILDING THE SAMPLE<o:p></o:p></span></h3>

<p><span style='font-size:10.0pt;font-family:Verdana'>To build the sample, run <b>build</b>
from this directory. Once built, the sample will produce the binary
DDKLocalmon.dll. <o:p></o:p></span></p>

<p><span style='font-size:10.0pt;font-family:Verdana'>The INF file <span
class=SpellE>monitor.inf</span> is used for installing the port monitor. Both
the port <span class=GramE>monitor</span> DLL and the port monitor�s user
interface DLL are installed using the <span class=SpellE>monitor.inf</span>
file. <o:p></o:p></span></p>

<h3><span style='font-family:Verdana'>CODE TOUR<o:p></o:p></span></h3>

<h4><span style='font-family:Verdana'>File Manifest<o:p></o:p></span></h4>

<pre><u>File<span style='mso-tab-count:2'>���������� </span>Description<o:p></o:p></u></pre><pre>&nbsp;</pre><pre><span
class=SpellE>Config.c</span><span style='mso-tab-count:1'>������ </span>Handles spooler entry points for adding, deleting, and configuring <span
class=SpellE>localmon</span> ports </pre><pre><span
class=SpellE>Lmon.h</span><span style='mso-spacerun:yes'>� </span><span
style='mso-tab-count:1'>������ </span>Header that declares PORT_INFO_FF structure </pre><pre><span
class=SpellE>Irda.c</span><span style='mso-tab-count:2'>�������� </span>IRDA printing support in <span
class=SpellE>localmon</span></pre><pre><span class=SpellE>Irda.h</span><span
style='mso-tab-count:2'>�������� </span>Header for IRDA</pre><pre><span
class=SpellE>Local.h</span> <span style='mso-tab-count:1'>������ </span>Header that declares debug functions</pre><pre><span
class=SpellE>Localmon.c</span><span style='mso-tab-count:1'>���� </span>Source module that contains the DLL entry point </pre><pre><span
class=SpellE>Localmon.def</span><span style='mso-tab-count:1'>�� </span>File that lists the exported functions </pre><pre><span
class=SpellE>Localmon.prf</span><span style='mso-tab-count:1'>�� </span>Resource file for the dialogs </pre><pre><span
class=SpellE>Localmon.h</span><span style='mso-tab-count:1'>���� </span>Header for global declarations and function prototypes </pre><pre>Localmon.htm<span
style='mso-tab-count:1'>�� </span>Documentation for this sample (this file)</pre><pre><span
class=SpellE>Localmon.rc</span><span style='mso-tab-count:1'>��� </span>Resource file for the module </pre><pre><span
class=SpellE>Makefile</span><span style='mso-tab-count:1'>������ </span>Generic file for building the code sample</pre><pre><span
class=SpellE>Precomp.h</span><span style='mso-tab-count:1'>����� </span>Generic header</pre><pre><span
class=SpellE>Resource.rcv</span><span style='mso-tab-count:1'>�� </span>Resource version file</pre><pre><span
class=SpellE>Resource.h</span><span style='mso-tab-count:1'>���� </span>Resource header file</pre><pre><span
class=SpellE>Setlink.c</span><span style='mso-tab-count:1'>����� </span>Utility to display or change the value of a symbolic link </pre><pre>Sources <span
style='mso-tab-count:1'>������ </span>Generic file for building the code sample</pre><pre><span
class=SpellE>Spltypes.h</span><span style='mso-tab-count:1'>���� </span>Header for <span
class=SpellE>Winspool.c</span> </pre><pre><span class=SpellE>Util.c</span><span style='mso-spacerun:yes'>� </span><span
style='mso-tab-count:1'>������ </span>Source module for support routines</pre><pre><span
class=SpellE>Winspool.c</span><span style='mso-tab-count:1'>���� </span>Implements the spooler supported APIs for printing</pre><pre><span
class=SpellE>Xcv.c</span><span style='mso-tab-count:2'>��������� </span>Interface for calling<span style='mso-spacerun:yes'>� </span>print spooler's <span
class=SpellE>XcvData</span> (<span class=SpellE>transceive</span> data) functions. This is the means by which a port monitor UI DLL communicates with its associated port monitor server DLL. </pre><pre>&nbsp;</pre><pre>&nbsp;</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:"Courier New"'><a href="#top"><span
style='font-family:Verdana'>Top of page</span></a></span><span
style='font-size:10.0pt;font-family:Verdana;mso-bidi-font-family:"Courier New"'>
<o:p></o:p></span></p>

<pre>&nbsp;</pre>

<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>&nbsp;</p>
  </td>
 </tr>
</table>

<pre>&nbsp;</pre><pre>&nbsp;</pre>

<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";mso-bidi-font-family:"Courier New"'>�
1999 Microsoft Corporation</span><span style='font-size:10.0pt;font-family:
Verdana;mso-bidi-font-family:"Courier New"'> <o:p></o:p></span></p>

</div>

</body>

</html>