Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 1d49b8f9ae104bfd1869bc35e6bbf50d > files > 186

pcsc-lite-doc-1.7.2-1.fc15.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>pcsc-lite: readerfactory.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">pcsc-lite&#160;<span id="projectnumber">1.7.2</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="dir_7a4553ee0c3b13d0e595a5d1659110a6.html">src</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<h1>readerfactory.c File Reference</h1>  </div>
</div>
<div class="contents">

<p>This keeps track of a list of currently available reader structures.  
<a href="#_details">More...</a></p>
<div class="textblock"><code>#include &quot;config.h&quot;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;sys/stat.h&gt;</code><br/>
<code>#include &lt;errno.h&gt;</code><br/>
<code>#include &lt;fcntl.h&gt;</code><br/>
<code>#include &lt;pthread.h&gt;</code><br/>
<code>#include &quot;misc.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="pcscd_8h_source.html">pcscd.h</a>&quot;</code><br/>
<code>#include &quot;debuglog.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="readerfactory_8h_source.html">readerfactory.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="dyn__generic_8h_source.html">dyn_generic.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="sys__generic_8h_source.html">sys_generic.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="eventhandler_8h_source.html">eventhandler.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ifdwrapper_8h_source.html">ifdwrapper.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="hotplug_8h_source.html">hotplug.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="strlcpycat_8h_source.html">strlcpycat.h</a>&quot;</code><br/>
<code>#include &quot;configfile.h&quot;</code><br/>
<code>#include &quot;utils.h&quot;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for readerfactory.c:</div>
<div class="dyncontent">
<div class="center"><img src="readerfactory_8c__incl.png" border="0" usemap="#readerfactory_8c" alt=""/></div>
<map name="readerfactory_8c" id="readerfactory_8c">
<area shape="rect" id="node23" href="misc_8h_source.html" title="misc.h" alt="" coords="808,83,869,112"/><area shape="rect" id="node25" href="pcscd_8h.html" title="This keeps a list of defines for pcsc&#45;lite." alt="" coords="1005,237,1072,267"/><area shape="rect" id="node29" href="readerfactory_8h.html" title="This keeps track of a list of currently available reader structures." alt="" coords="1184,160,1293,189"/><area shape="rect" id="node42" href="dyn__generic_8h.html" title="This abstracts dynamic library loading functions." alt="" coords="1184,83,1285,112"/><area shape="rect" id="node44" href="sys__generic_8h.html" title="This handles abstract system level calls." alt="" coords="683,83,784,112"/><area shape="rect" id="node49" href="eventhandler_8h.html" title="This handles card insertion/removal events, updates ATR, protocol, and status information." alt="" coords="893,83,1000,112"/><area shape="rect" id="node53" href="ifdwrapper_8h.html" title="This wraps the dynamic ifdhandler functions." alt="" coords="1411,83,1504,112"/><area shape="rect" id="node55" href="hotplug_8h.html" title="This provides a search API for hot pluggble devices." alt="" coords="1528,83,1603,112"/><area shape="rect" id="node57" href="strlcpycat_8h.html" title="prototypes of strlcpy()/strlcat() imported from OpenBSD" alt="" coords="1627,83,1717,112"/><area shape="rect" id="node59" href="configfile_8h_source.html" title="configfile.h" alt="" coords="1741,83,1827,112"/><area shape="rect" id="node61" href="utils_8h_source.html" title="utils.h" alt="" coords="1851,83,1907,112"/><area shape="rect" id="node37" href="simclist_8h_source.html" title="simclist.h" alt="" coords="1096,237,1173,267"/></map>
</div>
</div>
<p><a href="readerfactory_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="readerfactory.c::TRUE" ref="aa8cecfc5c5c054d2875c03e77b7be15d" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRUE</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="readerfactory.c::FALSE" ref="aa93f0eb578d23995850d61f7d61c55c1" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>FALSE</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a137cdb9c3d0df9656c1ee9a77023de27"></a><!-- doxytag: member="readerfactory.c::IDENTITY_SHIFT" ref="a137cdb9c3d0df9656c1ee9a77023de27" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>IDENTITY_SHIFT</b>&#160;&#160;&#160;16</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_ADDRESS_OPTIONALv2</b>(s, code)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_ADDRESSv2</b>(s)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_ADDRESS_OPTIONALv3</b>(s, code)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_ADDRESSv3</b>(s)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8eb79359fe9185c9516b8a19d4df25ff"></a><!-- doxytag: member="readerfactory.c::RDR_CLIHANDLES_seeker" ref="a8eb79359fe9185c9516b8a19d4df25ff" args="(const void *el, const void *key)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>RDR_CLIHANDLES_seeker</b> (const void *el, const void *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1642ec51326be86454522188a5ba5001"></a><!-- doxytag: member="readerfactory.c::RFAllocateReaderSpace" ref="a1642ec51326be86454522188a5ba5001" args="(unsigned int customMaxReaderHandles)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFAllocateReaderSpace</b> (unsigned int customMaxReaderHandles)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad74e6016d8361e73bcdee4b5d1c7325a"></a><!-- doxytag: member="readerfactory.c::RFAddReader" ref="ad74e6016d8361e73bcdee4b5d1c7325a" args="(const char *readerName, int port, const char *library, const char *device)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFAddReader</b> (const char *readerName, int port, const char *library, const char *device)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada4fcaa0bddeba72fb492fb6e7b78f62"></a><!-- doxytag: member="readerfactory.c::RFRemoveReader" ref="ada4fcaa0bddeba72fb492fb6e7b78f62" args="(const char *readerName, int port)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFRemoveReader</b> (const char *readerName, int port)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace78b182c2e726b8aaaa5bb9695e29ce"></a><!-- doxytag: member="readerfactory.c::RFSetReaderName" ref="ace78b182c2e726b8aaaa5bb9695e29ce" args="(READER_CONTEXT *rContext, const char *readerName, const char *libraryName, int port, DWORD slot)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFSetReaderName</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, const char *readerName, const char *libraryName, int port, DWORD slot)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a054b17c9141237be7302bcc92d9a5160"></a><!-- doxytag: member="readerfactory.c::RFReaderInfo" ref="a054b17c9141237be7302bcc92d9a5160" args="(const char *readerName, READER_CONTEXT **sReader)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFReaderInfo</b> (const char *readerName, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> **sReader)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36af7e43e96281b540c0cbea964361c0"></a><!-- doxytag: member="readerfactory.c::RFReaderInfoNamePort" ref="a36af7e43e96281b540c0cbea964361c0" args="(int port, const char *readerName, READER_CONTEXT **sReader)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFReaderInfoNamePort</b> (int port, const char *readerName, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> **sReader)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1494372f9dcff2bca1a0acc392a1701c"></a><!-- doxytag: member="readerfactory.c::RFReaderInfoById" ref="a1494372f9dcff2bca1a0acc392a1701c" args="(DWORD dwIdentity, READER_CONTEXT **sReader)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFReaderInfoById</b> (DWORD dwIdentity, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> **sReader)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affe8783b1e1ea9bad543ae30685f443b"></a><!-- doxytag: member="readerfactory.c::RFLoadReader" ref="affe8783b1e1ea9bad543ae30685f443b" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFLoadReader</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7209713f9920f6caba53c3f422baf17"></a><!-- doxytag: member="readerfactory.c::RFBindFunctions" ref="ae7209713f9920f6caba53c3f422baf17" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFBindFunctions</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22c08bd65090bf0cb7bbcb4c6f0d5b7b"></a><!-- doxytag: member="readerfactory.c::RFUnBindFunctions" ref="a22c08bd65090bf0cb7bbcb4c6f0d5b7b" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFUnBindFunctions</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66052c24553336c002225c078e53da26"></a><!-- doxytag: member="readerfactory.c::RFUnloadReader" ref="a66052c24553336c002225c078e53da26" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFUnloadReader</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad24b1fd707edee5f26d480534dc02661"></a><!-- doxytag: member="readerfactory.c::RFCheckSharing" ref="ad24b1fd707edee5f26d480534dc02661" args="(SCARDHANDLE hCard, READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFCheckSharing</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5133799a221bd06ea648891c717c0b3"></a><!-- doxytag: member="readerfactory.c::RFLockSharing" ref="aa5133799a221bd06ea648891c717c0b3" args="(SCARDHANDLE hCard, READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFLockSharing</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a364d471255f2e523c223cd92ad0f6b10"></a><!-- doxytag: member="readerfactory.c::RFUnlockSharing" ref="a364d471255f2e523c223cd92ad0f6b10" args="(SCARDHANDLE hCard, READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFUnlockSharing</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c87ece049dd76062c43a2ac0c5ab40a"></a><!-- doxytag: member="readerfactory.c::RFUnlockAllSharing" ref="a2c87ece049dd76062c43a2ac0c5ab40a" args="(SCARDHANDLE hCard, READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFUnlockAllSharing</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, <a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d72fc93ee0ddbfb4248b1eea9dd279"></a><!-- doxytag: member="readerfactory.c::RFInitializeReader" ref="a22d72fc93ee0ddbfb4248b1eea9dd279" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFInitializeReader</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ddf9b9f18be02a3f1a96ff3f4a67ab0"></a><!-- doxytag: member="readerfactory.c::RFUnInitializeReader" ref="a4ddf9b9f18be02a3f1a96ff3f4a67ab0" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFUnInitializeReader</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98a7a92fe38859941b02a85a2994a7c3"></a><!-- doxytag: member="readerfactory.c::RFCreateReaderHandle" ref="a98a7a92fe38859941b02a85a2994a7c3" args="(READER_CONTEXT *rContext)" -->
<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>&#160;</td><td class="memItemRight" valign="bottom"><b>RFCreateReaderHandle</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fb3cf4b9648c3a78f6f5a2bf4b3edb0"></a><!-- doxytag: member="readerfactory.c::RFFindReaderHandle" ref="a2fb3cf4b9648c3a78f6f5a2bf4b3edb0" args="(SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFFindReaderHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42c38f85d751e52b5c967571c7e61c34"></a><!-- doxytag: member="readerfactory.c::RFDestroyReaderHandle" ref="a42c38f85d751e52b5c967571c7e61c34" args="(SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFDestroyReaderHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8d48540a22186d330869059ff0700b8"></a><!-- doxytag: member="readerfactory.c::RFAddReaderHandle" ref="ac8d48540a22186d330869059ff0700b8" args="(READER_CONTEXT *rContext, SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFAddReaderHandle</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, <a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacd0c536f8eec5ac1f1458fcaa6caaaf"></a><!-- doxytag: member="readerfactory.c::RFRemoveReaderHandle" ref="aacd0c536f8eec5ac1f1458fcaa6caaaf" args="(READER_CONTEXT *rContext, SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFRemoveReaderHandle</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, <a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94b888c6f03f2f0f5445d661e20633c3"></a><!-- doxytag: member="readerfactory.c::RFSetReaderEventState" ref="a94b888c6f03f2f0f5445d661e20633c3" args="(READER_CONTEXT *rContext, DWORD dwEvent)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFSetReaderEventState</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, DWORD dwEvent)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af62002905615b2d429d8ff1d018bef14"></a><!-- doxytag: member="readerfactory.c::RFCheckReaderEventState" ref="af62002905615b2d429d8ff1d018bef14" args="(READER_CONTEXT *rContext, SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFCheckReaderEventState</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, <a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e143c6a6c895e1ec3c551bc5d3002ed"></a><!-- doxytag: member="readerfactory.c::RFClearReaderEventState" ref="a4e143c6a6c895e1ec3c551bc5d3002ed" args="(READER_CONTEXT *rContext, SCARDHANDLE hCard)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFClearReaderEventState</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext, <a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac96dc477fc017296934cbbcfdd200a3f"></a><!-- doxytag: member="readerfactory.c::RFCheckReaderStatus" ref="ac96dc477fc017296934cbbcfdd200a3f" args="(READER_CONTEXT *rContext)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>RFCheckReaderStatus</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acccd0e6a79ea2505f8d930c5c8324e0c"></a><!-- doxytag: member="readerfactory.c::RFCleanupReaders" ref="acccd0e6a79ea2505f8d930c5c8324e0c" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>RFCleanupReaders</b> (void)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1adfcc73f45f3fb0846c6f2bfe635dbd"></a><!-- doxytag: member="readerfactory.c::sReadersContexts" ref="a1adfcc73f45f3fb0846c6f2bfe635dbd" args="[PCSCLITE_MAX_READERS_CONTEXTS]" -->
static <a class="el" href="structReaderContext.html">READER_CONTEXT</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>sReadersContexts</b> [PCSCLITE_MAX_READERS_CONTEXTS]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad70f4ad5a6e9b001970ee9afc2130875"></a><!-- doxytag: member="readerfactory.c::readerStates" ref="ad70f4ad5a6e9b001970ee9afc2130875" args="[PCSCLITE_MAX_READERS_CONTEXTS]" -->
<a class="el" href="structpubReaderStatesList.html">READER_STATE</a>&#160;</td><td class="memItemRight" valign="bottom"><b>readerStates</b> [PCSCLITE_MAX_READERS_CONTEXTS]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65432ea475ee4a005bd4c9ac4bc1fa3b"></a><!-- doxytag: member="readerfactory.c::maxReaderHandles" ref="a65432ea475ee4a005bd4c9ac4bc1fa3b" args="" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>maxReaderHandles</b> = PCSC_MAX_READER_HANDLES</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5afe29bc3ccda13a034ebd2ab10a55dd"></a><!-- doxytag: member="readerfactory.c::dwNumReadersContexts" ref="a5afe29bc3ccda13a034ebd2ab10a55dd" args="" -->
static DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>dwNumReadersContexts</b> = 0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21709a45e82b32704abdc66474dded3c"></a><!-- doxytag: member="readerfactory.c::LockMutex" ref="a21709a45e82b32704abdc66474dded3c" args="" -->
static pthread_mutex_t&#160;</td><td class="memItemRight" valign="bottom"><b>LockMutex</b> = PTHREAD_MUTEX_INITIALIZER</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This keeps track of a list of currently available reader structures. </p>

<p>Definition in file <a class="el" href="readerfactory_8c_source.html">readerfactory.c</a>.</p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a0d6eb3d175a2147e3112e19433aaa918"></a><!-- doxytag: member="readerfactory.c::GET_ADDRESS_OPTIONALv2" ref="a0d6eb3d175a2147e3112e19433aaa918" args="(s, code)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GET_ADDRESS_OPTIONALv2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">code&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
    <span class="keywordtype">void</span> *f1 = NULL; \
    <span class="keywordtype">int</span> rvl = DYN_GetAddress(rContext-&gt;vHandle, &amp;f1, <span class="stringliteral">&quot;IFDH&quot;</span> #s); \
    <span class="keywordflow">if</span> (<a class="code" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75" title="error codes from http://msdn.microsoft.com/en-us/library/aa924526.aspx">SCARD_S_SUCCESS</a> != rvl) \
    { \
        code \
    } \
    rContext-&gt;psFunctions.psFunctions_v2.pvf ## s = f1; \
}
</pre></div>
</div>
</div>
<a class="anchor" id="a898b8972d7ce943f56d5b0ff12eae869"></a><!-- doxytag: member="readerfactory.c::GET_ADDRESS_OPTIONALv3" ref="a898b8972d7ce943f56d5b0ff12eae869" args="(s, code)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GET_ADDRESS_OPTIONALv3</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">code&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
    <span class="keywordtype">void</span> *f1 = NULL; \
    <span class="keywordtype">int</span> rvl = DYN_GetAddress(rContext-&gt;vHandle, &amp;f1, <span class="stringliteral">&quot;IFDH&quot;</span> #s); \
    <span class="keywordflow">if</span> (<a class="code" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75" title="error codes from http://msdn.microsoft.com/en-us/library/aa924526.aspx">SCARD_S_SUCCESS</a> != rvl) \
    { \
        code \
    } \
    rContext-&gt;psFunctions.psFunctions_v3.pvf ## s = f1; \
}
</pre></div>
</div>
</div>
<a class="anchor" id="a290956b7c41ae583d36b48772a959381"></a><!-- doxytag: member="readerfactory.c::GET_ADDRESSv2" ref="a290956b7c41ae583d36b48772a959381" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GET_ADDRESSv2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">GET_ADDRESS_OPTIONALv2(s, \
        Log1(PCSC_LOG_CRITICAL, <span class="stringliteral">&quot;IFDHandler functions missing: &quot;</span> #s ); \
        <span class="keywordflow">return</span>(rv); )
</pre></div>
</div>
</div>
<a class="anchor" id="a6d647157ee6bd2695a72843b69c87e87"></a><!-- doxytag: member="readerfactory.c::GET_ADDRESSv3" ref="a6d647157ee6bd2695a72843b69c87e87" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GET_ADDRESSv3</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">GET_ADDRESS_OPTIONALv3(s, \
        Log1(PCSC_LOG_CRITICAL, <span class="stringliteral">&quot;IFDHandler functions missing: &quot;</span> #s ); \
        <span class="keywordflow">return</span>(rv); )
</pre></div>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Thu Mar 31 2011 for pcsc-lite by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>