mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
327 lines
16 KiB
327 lines
16 KiB
<html 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 9">
|
|
<meta name=Originator content="Microsoft Word 9">
|
|
<link rel=File-List href="./fakemodem_files/filelist.xml">
|
|
<title>UNIMODEM sample controller-less modem driver (fakemodem)</title>
|
|
<style>
|
|
<!--
|
|
/* Font Definitions */
|
|
@font-face
|
|
{font-family:Courier;
|
|
panose-1:0 0 0 0 0 0 0 0 0 0;
|
|
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:"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;}
|
|
@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;}
|
|
/* 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
|
|
{margin-right:0in;
|
|
mso-margin-top-alt:auto;
|
|
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";
|
|
font-weight:bold;}
|
|
h3
|
|
{margin-right:0in;
|
|
mso-margin-top-alt:auto;
|
|
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";
|
|
font-weight:bold;}
|
|
h4
|
|
{margin-right:0in;
|
|
mso-margin-top-alt:auto;
|
|
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";
|
|
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
|
|
{margin-right:0in;
|
|
mso-margin-top-alt:auto;
|
|
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";}
|
|
@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:837157684;
|
|
mso-list-type:hybrid;
|
|
mso-list-template-ids:152977158 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
ol
|
|
{margin-bottom:0in;}
|
|
ul
|
|
{margin-bottom:0in;}
|
|
-->
|
|
</style>
|
|
</head>
|
|
|
|
<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
|
|
|
|
<div class=Section1>
|
|
|
|
<h2><span style='font-family:Verdana'>UNIMODEM sample controller-less modem
|
|
driver (Fakemodem)<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 style='tab-stops:120.0pt'><span style='font-family:Verdana'>SUMMARY<span
|
|
style='mso-tab-count:1'> </span><o:p></o:p></span></h3>
|
|
|
|
<p><span style='font-size:10.0pt;font-family:Verdana'>This sample demonstrates
|
|
a simple controller-less modem driver. This driver supports sending and
|
|
receiving AT commands using the ReadFile/WriteFile calls or via a TAPI
|
|
interface using an application such as HyperTerminal.<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 sample\sys
|
|
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'>The
|
|
driver is installed using the INF file mdmfake.inf, which is provided in the
|
|
sample\inf directory. <span style="mso-spacerun: yes"> </span><o:p></o:p></span></p>
|
|
|
|
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>To
|
|
install this driver, a PCI enumeration event must first take place. <span
|
|
style="mso-spacerun: yes"> </span>Mdmfake.inf has been pre-configured with the
|
|
device ID <b>PCI\VEN_9999&DEV_9999</b>.<b><o:p></o:p></b></span></p>
|
|
|
|
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>In
|
|
the Phone and Modem Options CPL:<o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>1.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>Click <b>Modems</b> to view the list of modems installed.<o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>2.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>Click <b>Add</b> then <b>Next</b><o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>3.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>The PCI device will then enumerate a <b>PCI Simple
|
|
Communications Controller</b>.<o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>4.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>At the found new hardware wizard, select <b>Install from a
|
|
list or specific location (Advanced)</b>.<o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>5.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>Uncheck <b>Search removable media (floppy, CD-ROM…)</b><o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>6.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>Check <b>Include this location in the search:</b><o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>7.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>In the directory pull down list, enter the location of the
|
|
driver.<o:p></o:p></span></p>
|
|
|
|
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2;
|
|
tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt;
|
|
mso-bidi-font-size:12.0pt;font-family:Verdana'>8.<span style='font:7.0pt "Times New Roman"'>
|
|
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
|
|
font-family:Verdana'>Click <b>Next</b>.<o:p></o:p></span></p>
|
|
|
|
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>Note
|
|
that if you get a warning dialog with regards to Windows Logo, or unsigned
|
|
drivers, testing then click on <b>continue</b>.<o:p></o:p></span></p>
|
|
|
|
<h3><span style='font-family:Verdana'>USAGE<o:p></o:p></span></h3>
|
|
|
|
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>Once
|
|
installed, you can talk to the fakemodem driver through HyperTerminal, or via
|
|
ReadFile/WriteFile calls.<span style="mso-spacerun: yes"> </span>The AT
|
|
command set supported by fakemodem includes:<o:p></o:p></span></p>
|
|
|
|
<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'><span
|
|
style='mso-tab-count:1'> </span><b>AT</b><span style='mso-tab-count:
|
|
3'> </span>returns <b>OK</b><br>
|
|
<br>
|
|
<span style='mso-tab-count:1'> </span><b>ATA</b><span
|
|
style='mso-tab-count:3'> </span>returns <b>CONNECT<o:p></o:p></b></span></p>
|
|
|
|
<p><b><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'><span
|
|
style='mso-tab-count:1'> </span>ATD</span></b><span
|
|
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'><number><span
|
|
style='mso-tab-count:2'> </span>returns <b>CONNECT</b><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'>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
|
|
fakemodem.sys, you can control the volume of debug information generated by
|
|
changing the registry variable DebugFlags. Refer to fakemodem.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: Inf</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><o:p></o:p></span></pre><pre><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><![if !supportEmptyParas]> <![endif]><o:p></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'> </span><u>Description<o:p></o:p></u></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>mdmfake.inf</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:1'> </span>INF file for installing the fakemodem driver<o:p></o:p></span></pre><pre><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:1'> </span><o:p></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'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></pre><pre><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><![if !supportEmptyParas]> <![endif]><o:p></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'> </span><u>Description<o:p></o:p></u></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>init.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Fakemodem driver initialization entry points<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>readwrit.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:1'> </span>Routines for receiving and sending text. This includes processing AT commands.<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>open.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Routines for opening and closing device extensions.<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>util.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Auxiliary functions.<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>pnp.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Routines for handling Plug & Play events.<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>ioctl.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Routines to handle IOCTL messages.<o:p></o:p></span></pre><pre><b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'>power.c</span></b><span
|
|
style='font-size:9.0pt;mso-bidi-font-size:7.5pt;font-family:Courier'><span
|
|
style='mso-tab-count:2'> </span>Routines to handle power management messages.<o:p></o:p></span></pre><pre><span
|
|
style='font-size:7.5pt;font-family:Courier'><![if !supportEmptyParas]> <![endif]><o:p></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 border=0 cellspacing=0 cellpadding=0 width=624 style='width:6.5in;
|
|
mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in'>
|
|
<tr style='height:1.5pt'>
|
|
<td style='background:aqua;padding:.75pt .75pt .75pt .75pt;height:1.5pt'>
|
|
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></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"'>© Microsoft Corporation
|
|
2000</span><span style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|