Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 6c21d55247420ace69cad1d05267fc34 > files > 285

pcsc-lite-doc-1.7.2-4.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: winscard_clnt.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.4 -->
<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="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">winscard_clnt.c File Reference</div>  </div>
</div>
<div class="contents">
<div class="textblock"><code>#include &quot;config.h&quot;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;fcntl.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;sys/un.h&gt;</code><br/>
<code>#include &lt;errno.h&gt;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
<code>#include &lt;sys/time.h&gt;</code><br/>
<code>#include &lt;pthread.h&gt;</code><br/>
<code>#include &lt;sys/wait.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;<a class="el" href="winscard_8h_source.html">winscard.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="debuglog_8h_source.html">debuglog.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;<a class="el" href="readerfactory_8h_source.html">readerfactory.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="sys__generic_8h_source.html">sys_generic.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="winscard__msg_8h_source.html">winscard_msg.h</a>&quot;</code><br/>
<code>#include &quot;utils.h&quot;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for winscard_clnt.c:</div>
<div class="dyncontent">
<div class="center"><img src="winscard__clnt_8c__incl.png" border="0" usemap="#winscard__clnt_8c" alt=""/></div>
<map name="winscard__clnt_8c" id="winscard__clnt_8c">
<area shape="rect" id="node27" href="misc_8h_source.html" title="misc.h" alt="" coords="1325,83,1387,112"/><area shape="rect" id="node29" href="pcscd_8h.html" title="This keeps a list of defines for pcsc&#45;lite." alt="" coords="827,237,893,267"/><area shape="rect" id="node31" href="winscard_8h.html" title="This handles smartcard reader communications." alt="" coords="793,160,879,189"/><area shape="rect" id="node37" href="debuglog_8h.html" title="This handles debugging." alt="" coords="1411,83,1496,112"/><area shape="rect" id="node39" href="strlcpycat_8h.html" title="prototypes of strlcpy()/strlcat() imported from OpenBSD" alt="" coords="1520,83,1611,112"/><area shape="rect" id="node41" href="readerfactory_8h.html" title="This keeps track of a list of currently available reader structures." alt="" coords="464,160,573,189"/><area shape="rect" id="node55" href="eventhandler_8h.html" title="This handles card insertion/removal events, updates ATR, protocol, and status information." alt="" coords="1635,83,1741,112"/><area shape="rect" id="node59" href="sys__generic_8h.html" title="This handles abstract system level calls." alt="" coords="1907,83,2008,112"/><area shape="rect" id="node65" href="winscard__msg_8h.html" title="This defines some structures and #defines to be used over the transport layer." alt="" coords="1765,83,1883,112"/><area shape="rect" id="node68" href="utils_8h_source.html" title="utils.h" alt="" coords="333,83,389,112"/><area shape="rect" id="node33" href="pcsclite_8h.html" title="This keeps a list of defines for pcsc&#45;lite." alt="" coords="659,315,736,344"/><area shape="rect" id="node35" href="wintypes_8h.html" title="This keeps a list of Windows(R) types." alt="" coords="465,392,551,421"/><area shape="rect" id="node46" href="ifdhandler_8h.html" title="ifdhandler.h" alt="" coords="616,237,704,267"/><area shape="rect" id="node50" href="simclist_8h_source.html" title="simclist.h" alt="" coords="464,237,541,267"/></map>
</div>
</div>
<p><a href="winscard__clnt_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__psChannelMap.html">_psChannelMap</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents an Application Context Channel.  <a href="struct__psChannelMap.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__psContextMap.html">_psContextMap</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents the an Application Context on the Client side.  <a href="struct__psContextMap.html#details">More...</a><br/></td></tr>
<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="ac7c340dc56974012d266eff9be71e9ed"></a><!-- doxytag: member="winscard_clnt.c::SCARD_PROTOCOL_ANY_OLD" ref="ac7c340dc56974012d266eff9be71e9ed" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ac7c340dc56974012d266eff9be71e9ed">SCARD_PROTOCOL_ANY_OLD</a>&#160;&#160;&#160;0x1000</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">used for backward compatibility <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="winscard_clnt.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="winscard_clnt.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="ad86358bf19927183dd7b4ae215a29731"></a><!-- doxytag: member="winscard_clnt.c::COLOR_RED" ref="ad86358bf19927183dd7b4ae215a29731" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>COLOR_RED</b>&#160;&#160;&#160;&quot;\33[01;31m&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc9149f5de51bd9ac4f5ebbfa153f018"></a><!-- doxytag: member="winscard_clnt.c::COLOR_GREEN" ref="afc9149f5de51bd9ac4f5ebbfa153f018" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>COLOR_GREEN</b>&#160;&#160;&#160;&quot;\33[32m&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23c70d699a5a775bc2e1ebeb8603f630"></a><!-- doxytag: member="winscard_clnt.c::COLOR_BLUE" ref="a23c70d699a5a775bc2e1ebeb8603f630" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>COLOR_BLUE</b>&#160;&#160;&#160;&quot;\33[34m&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8deb0beccea721b35bdb1b4f7264fe75"></a><!-- doxytag: member="winscard_clnt.c::COLOR_MAGENTA" ref="a8deb0beccea721b35bdb1b4f7264fe75" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>COLOR_MAGENTA</b>&#160;&#160;&#160;&quot;\33[35m&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac366dc6682d1d12bcae1eb1ae8ae09c5"></a><!-- doxytag: member="winscard_clnt.c::COLOR_NORMAL" ref="ac366dc6682d1d12bcae1eb1ae8ae09c5" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>COLOR_NORMAL</b>&#160;&#160;&#160;&quot;\33[0m&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96038722e1bf19665036b85a1ddc7749"></a><!-- doxytag: member="winscard_clnt.c::API_TRACE_IN" ref="a96038722e1bf19665036b85a1ddc7749" args="(...)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>API_TRACE_IN</b>(...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac40447850a2ff4923c0b5bb2a38a43ae"></a><!-- doxytag: member="winscard_clnt.c::API_TRACE_OUT" ref="ac40447850a2ff4923c0b5bb2a38a43ae" args="(...)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>API_TRACE_OUT</b>(...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa402baa5f9ea438ec090db1e77961ecc"></a><!-- doxytag: member="winscard_clnt.c::PROFILE_START" ref="aa402baa5f9ea438ec090db1e77961ecc" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PROFILE_START</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62b2b1636665925df13b65761b9015db"></a><!-- doxytag: member="winscard_clnt.c::PROFILE_END" ref="a62b2b1636665925df13b65761b9015db" args="(rv)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PROFILE_END</b>(rv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af488ebf627994c02fa1b3ee3c11fdd99"></a><!-- doxytag: member="winscard_clnt.c::CHECK_SAME_PROCESS" ref="af488ebf627994c02fa1b3ee3c11fdd99" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CHECK_SAME_PROCESS</b></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cc1f8e21119487ef295322726d50dbe"></a><!-- doxytag: member="winscard_clnt.c::CHANNEL_MAP" ref="a1cc1f8e21119487ef295322726d50dbe" args="" -->
typedef struct <a class="el" href="struct__psChannelMap.html">_psChannelMap</a>&#160;</td><td class="memItemRight" valign="bottom"><b>CHANNEL_MAP</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b439067c34904f7f2733f984cfddbb"></a><!-- doxytag: member="winscard_clnt.c::SCONTEXTMAP" ref="aa2b439067c34904f7f2733f984cfddbb" args="" -->
typedef struct <a class="el" href="struct__psContextMap.html">_psContextMap</a>&#160;</td><td class="memItemRight" valign="bottom"><b>SCONTEXTMAP</b></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="a753c809db319591727f6d3d5521a0074"></a><!-- doxytag: member="winscard_clnt.c::CHANNEL_MAP_seeker" ref="a753c809db319591727f6d3d5521a0074" args="(const void *el, const void *key)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>CHANNEL_MAP_seeker</b> (const void *el, const void *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a188349ac564e73ebf2b6a15e98fe17bc"></a><!-- doxytag: member="winscard_clnt.c::SCONTEXTMAP_seeker" ref="a188349ac564e73ebf2b6a15e98fe17bc" args="(const void *el, const void *key)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>SCONTEXTMAP_seeker</b> (const void *el, const void *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ac75190d70d571bca9915bef60491534a">SCardAddContext</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, DWORD dwClientID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for managing instances of <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context to the PC/SC Resource Manager.">SCardEstablishContext()</a> These functions keep track of Context handles and associate the blocking variable contextBlockStatus to an hContext.  <a href="#ac75190d70d571bca9915bef60491534a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a8a3c749483d20ff887797b0879244699">SCardGetContext</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context.  <a href="#a8a3c749483d20ff887797b0879244699"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#aafd00ba256e4ba8a81491c970ee336ed">SCardGetContextTH</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the address from the Application Context list <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context.  <a href="#aafd00ba256e4ba8a81491c970ee336ed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a7e3dc878020f1e5ccdae1a6914abd3b0">SCardRemoveContext</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an Application Context from a control vector.  <a href="#a7e3dc878020f1e5ccdae1a6914abd3b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06e082d192f3bc0a4d9a6fd2b9e7f84c"></a><!-- doxytag: member="winscard_clnt.c::SCardCleanContext" ref="a06e082d192f3bc0a4d9a6fd2b9e7f84c" args="(SCONTEXTMAP *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardCleanContext</b> (<a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58280aed0f69a1e136a8bf07534eeea3"></a><!-- doxytag: member="winscard_clnt.c::SCardAddHandle" ref="a58280aed0f69a1e136a8bf07534eeea3" args="(SCARDHANDLE, SCONTEXTMAP *, LPCSTR)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardAddHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> *, LPCSTR)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa50775d37eb073b04d74151d6ac0ca07"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContextAndChannelFromHandle" ref="aa50775d37eb073b04d74151d6ac0ca07" args="(SCARDHANDLE, SCONTEXTMAP **, CHANNEL_MAP **)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardGetContextAndChannelFromHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> **, <a class="el" href="struct__psChannelMap.html">CHANNEL_MAP</a> **)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec726aa82d786a4895cf14ed4cb11163"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContextAndChannelFromHandleTH" ref="aec726aa82d786a4895cf14ed4cb11163" args="(SCARDHANDLE, SCONTEXTMAP **, CHANNEL_MAP **)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardGetContextAndChannelFromHandleTH</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> **, <a class="el" href="struct__psChannelMap.html">CHANNEL_MAP</a> **)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad012ab6d25911259c82e06cb2fc1d971"></a><!-- doxytag: member="winscard_clnt.c::SCardRemoveHandle" ref="ad012ab6d25911259c82e06cb2fc1d971" args="(SCARDHANDLE)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardRemoveHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1debc96721101456a1c1cd8fbbdcfe2"></a><!-- doxytag: member="winscard_clnt.c::SCardGetSetAttrib" ref="aa1debc96721101456a1c1cd8fbbdcfe2" args="(SCARDHANDLE hCard, int command, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>SCardGetSetAttrib</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, int command, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc059866489511d24d10fb2427ae0bfa"></a><!-- doxytag: member="winscard_clnt.c::getReaderStates" ref="acc059866489511d24d10fb2427ae0bfa" args="(SCONTEXTMAP *currentContextMap)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>getReaderStates</b> (<a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> *currentContextMap)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1f7e1b05b30f1e5a5cd62b2f925222fe">SCardLockThread</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Locks a mutex so another thread must wait to use this function.  <a href="#a1f7e1b05b30f1e5a5cd62b2f925222fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a5dc8cab71db796c9e91329c22f4ebfa1">SCardUnlockThread</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlocks a mutex so another thread may use the client.  <a href="#a5dc8cab71db796c9e91329c22f4ebfa1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#aa86f1a8ccfbdbe7c64eea5219c7639e6">SCardEstablishContextTH</a> (DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2, LPSCARDCONTEXT phContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a communication context to the PC/SC Resource Manager.  <a href="#aa86f1a8ccfbdbe7c64eea5219c7639e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67">SCardEstablishContext</a> (DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an Application Context to the PC/SC Resource Manager.  <a href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga6aabcba7744c5c9419fdd6404f73a934">SCardReleaseContext</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a communication context to the PC/SC Resource Manager.  <a href="group__API.html#ga6aabcba7744c5c9419fdd6404f73a934"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5">SCardConnect</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Establishes a connection to the reader specified in <code>*</code> szReader.  <a href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gad5d4393ca8c470112ad9468c44ed8940">SCardReconnect</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwShareMode, DWORD dwPreferredProtocols, DWORD dwInitialization, LPDWORD pdwActiveProtocol)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reestablishes a connection to a reader that was previously connected to using <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="Establishes a connection to the reader specified in * szReader.">SCardConnect()</a>.  <a href="group__API.html#gad5d4393ca8c470112ad9468c44ed8940"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga4be198045c73ec0deb79e66c0ca1738a">SCardDisconnect</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates a connection made through <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="Establishes a connection to the reader specified in * szReader.">SCardConnect()</a>.  <a href="group__API.html#ga4be198045c73ec0deb79e66c0ca1738a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861">SCardBeginTransaction</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Establishes a temporary exclusive access mode for doing a serie of commands in a transaction.  <a href="group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gae8742473b404363e5c587f570d7e2f3b">SCardEndTransaction</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends a previously begun transaction.  <a href="group__API.html#gae8742473b404363e5c587f570d7e2f3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga18f33eebb45d9e0d2a091ca7a0511d26">SCardStatus</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, LPSTR mszReaderName, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current status of the reader connected to by <code>hCard</code>.  <a href="group__API.html#ga18f33eebb45d9e0d2a091ca7a0511d26"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga33247d5d1257d59e55647c3bb717db24">SCardGetStatusChange</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, DWORD dwTimeout, <a class="el" href="structSCARD__READERSTATE.html">SCARD_READERSTATE</a> *rgReaderStates, DWORD cReaders)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Blocks execution until the current availability of the cards in a specific set of readers changes.  <a href="group__API.html#ga33247d5d1257d59e55647c3bb717db24"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f">SCardControl</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a command directly to the IFD Handler (reader driver) to be processed by the reader.  <a href="group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaacfec51917255b7a25b94c5104961602">SCardGetAttrib</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an attribute from the IFD Handler (reader driver).  <a href="group__API.html#gaacfec51917255b7a25b94c5104961602"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f">SCardSetAttrib</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPCBYTE pbAttr, DWORD cbAttrLen)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an attribute of the IFD Handler.  <a href="group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga9a2d77242a271310269065e64633ab99">SCardTransmit</a> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, const <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a> *pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a> *pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends an APDU to the smart card contained in the reader connected to by <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="Establishes a connection to the reader specified in * szReader.">SCardConnect()</a>.  <a href="group__API.html#ga9a2d77242a271310269065e64633ab99"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga93b07815789b3cf2629d439ecf20f0d9">SCardListReaders</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function returns a list of currently available readers on the system.  <a href="group__API.html#ga93b07815789b3cf2629d439ecf20f0d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga0522241e3180cb05dfd166e28930e961">SCardFreeMemory</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, LPCVOID pvMem)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases memory that has been returned from the resource manager using the <a class="el" href="pcsclite_8h.html#a67db0943aeb13f9f468eaae39b5ff1b0">SCARD_AUTOALLOCATE</a> length designator.  <a href="group__API.html#ga0522241e3180cb05dfd166e28930e961"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga9d970d086d5218e080d0079d63f9d496">SCardListReaderGroups</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, LPSTR mszGroups, LPDWORD pcchGroups)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a list of currently available reader groups on the system.  <a href="group__API.html#ga9d970d086d5218e080d0079d63f9d496"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6">SCardCancel</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function cancels all pending blocking requests on the <a class="el" href="group__API.html#ga33247d5d1257d59e55647c3bb717db24" title="Blocks execution until the current availability of the cards in a specific set of readers changes...">SCardGetStatusChange()</a> function.  <a href="group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga722eb66bcc44d391f700ff9065cc080b">SCardIsValidContext</a> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a <a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> is valid.  <a href="group__API.html#ga722eb66bcc44d391f700ff9065cc080b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#aaa02e1f70d68a502cd92ed066c44542f">SCardCheckDaemonAvailability</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the server is running.  <a href="#aaa02e1f70d68a502cd92ed066c44542f"></a><br/></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="a994242ab48e4c06c98151daba4a98a54"></a><!-- doxytag: member="winscard_clnt.c::sharing_shall_block" ref="a994242ab48e4c06c98151daba4a98a54" args="" -->
static char&#160;</td><td class="memItemRight" valign="bottom"><b>sharing_shall_block</b> = TRUE</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ddcab38c4ff86a95a6de01fe418a4fd"></a><!-- doxytag: member="winscard_clnt.c::contextMapList" ref="a4ddcab38c4ff86a95a6de01fe418a4fd" args="" -->
static <a class="el" href="structlist__t.html">list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>contextMapList</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a5339bb356528ce056a2b3bfcc49444"></a><!-- doxytag: member="winscard_clnt.c::isExecuted" ref="a1a5339bb356528ce056a2b3bfcc49444" args="" -->
static short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1a5339bb356528ce056a2b3bfcc49444">isExecuted</a> = 0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Make sure the initialization code is executed only once. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static pthread_mutex_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a5fcdb76a493df6af8c2c9983cf38437d">clientMutex</a> = PTHREAD_MUTEX_INITIALIZER</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Ensure that some functions be accessed in thread-safe mode.  <a href="#a5fcdb76a493df6af8c2c9983cf38437d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad70f4ad5a6e9b001970ee9afc2130875"></a><!-- doxytag: member="winscard_clnt.c::readerStates" ref="ad70f4ad5a6e9b001970ee9afc2130875" args="[PCSCLITE_MAX_READERS_CONTEXTS]" -->
static <a class="el" href="structpubReaderStatesList.html">READER_STATE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ad70f4ad5a6e9b001970ee9afc2130875">readerStates</a> [PCSCLITE_MAX_READERS_CONTEXTS]</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Area used to read status information about the readers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add194ea1e5a4e8e92533a807b1b2d1ff"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardT0Pci" ref="add194ea1e5a4e8e92533a807b1b2d1ff" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#add194ea1e5a4e8e92533a807b1b2d1ff">g_rgSCardT0Pci</a> = { SCARD_PROTOCOL_T0, sizeof(<a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>) }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Protocol Control Information for T=0. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ea1ee5a3fa301c87f05a18e99fcd871"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardT1Pci" ref="a1ea1ee5a3fa301c87f05a18e99fcd871" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1ea1ee5a3fa301c87f05a18e99fcd871">g_rgSCardT1Pci</a> = { SCARD_PROTOCOL_T1, sizeof(<a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>) }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Protocol Control Information for T=1. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acadf43275ed54ac6ab7f380ade2eaf9d"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardRawPci" ref="acadf43275ed54ac6ab7f380ade2eaf9d" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#acadf43275ed54ac6ab7f380ade2eaf9d">g_rgSCardRawPci</a> = { SCARD_PROTOCOL_RAW, sizeof(<a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>) }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Protocol Control Information for raw access. <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="ac75190d70d571bca9915bef60491534a"></a><!-- doxytag: member="winscard_clnt.c::SCardAddContext" ref="ac75190d70d571bca9915bef60491534a" args="(SCARDCONTEXT hContext, DWORD dwClientID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardAddContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>&#160;</td>
          <td class="paramname"><em>hContext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DWORD&#160;</td>
          <td class="paramname"><em>dwClientID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Functions for managing instances of <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context to the PC/SC Resource Manager.">SCardEstablishContext()</a> These functions keep track of Context handles and associate the blocking variable contextBlockStatus to an hContext. </p>
<p>Adds an Application Context to the vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hContext</td><td>Application Context ID. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dwClientID</td><td>Client connection ID.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error code. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">SCARD_S_SUCCESS</td><td>Success (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_NO_MEMORY</td><td>There is no free slot to store <code>hContext</code> (<a class="el" href="pcsclite_8h.html#a81694393a1494d5091145734a2f0b36c">SCARD_E_NO_MEMORY</a>) </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l03300">3300</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>References <a class="el" href="winscard__clnt_8c_source.html#l00305">_psContextMap::cancellable</a>, <a class="el" href="winscard__clnt_8c_source.html#l00301">_psContextMap::dwClientID</a>, <a class="el" href="winscard__clnt_8c_source.html#l00302">_psContextMap::hContext</a>, <a class="el" href="winscard__clnt_8c_source.html#l00303">_psContextMap::mMutex</a>, <a class="el" href="pcsclite_8h_source.html#l00086">SCARD_E_NO_MEMORY</a>, and <a class="el" href="pcsclite_8h_source.html#l00080">SCARD_S_SUCCESS</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00498">SCardEstablishContextTH()</a>.</p>

</div>
</div>
<a class="anchor" id="aaa02e1f70d68a502cd92ed066c44542f"></a><!-- doxytag: member="winscard_clnt.c::SCardCheckDaemonAvailability" ref="aaa02e1f70d68a502cd92ed066c44542f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">LONG SCardCheckDaemonAvailability </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks if the server is running. </p>
<p>If the server has been restarted we invalidate all the PC/SC handles. The client has to call <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context to the PC/SC Resource Manager.">SCardEstablishContext()</a> again.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error code. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">SCARD_S_SUCCESS</td><td>Server is running (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_NO_SERVICE</td><td>Server is not running (<a class="el" href="pcsclite_8h.html#ad4729ab109ff490285d2ad881c04bee8">SCARD_E_NO_SERVICE</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_INVALID_HANDLE</td><td>Server was restarted or after fork() (<a class="el" href="pcsclite_8h.html#a05bdea2f2341e78d920885d1cc357676">SCARD_E_INVALID_HANDLE</a>) </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l03584">3584</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>References <a class="el" href="pcsclite_8h_source.html#l00109">SCARD_E_NO_SERVICE</a>, and <a class="el" href="pcsclite_8h_source.html#l00080">SCARD_S_SUCCESS</a>.</p>

<p>Referenced by <a class="el" href="winscard__msg_8c_source.html#l00159">MessageReceiveTimeout()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00443">SCardEstablishContext()</a>.</p>

</div>
</div>
<a class="anchor" id="aa86f1a8ccfbdbe7c64eea5219c7639e6"></a><!-- doxytag: member="winscard_clnt.c::SCardEstablishContextTH" ref="aa86f1a8ccfbdbe7c64eea5219c7639e6" args="(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2, LPSCARDCONTEXT phContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardEstablishContextTH </td>
          <td>(</td>
          <td class="paramtype">DWORD&#160;</td>
          <td class="paramname"><em>dwScope</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPCVOID&#160;</td>
          <td class="paramname"><em>pvReserved1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPCVOID&#160;</td>
          <td class="paramname"><em>pvReserved2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPSCARDCONTEXT&#160;</td>
          <td class="paramname"><em>phContext</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a communication context to the PC/SC Resource Manager. </p>
<p>This function should not be called directly. Instead, the thread-safe function <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context to the PC/SC Resource Manager.">SCardEstablishContext()</a> should be called.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dwScope</td><td>Scope of the establishment. This can either be a local or remote connection.<ul>
<li><a class="el" href="pcsclite_8h.html#a4476ec1c5ae384961f0f059fa28fb1dc">SCARD_SCOPE_USER</a> - Not used.</li>
<li><a class="el" href="pcsclite_8h.html#a82f7392ae7f5e6702940d7fc64854dc2">SCARD_SCOPE_TERMINAL</a> - Not used.</li>
<li><a class="el" href="pcscd_8h.html#a44e87b3c0cca8a029dd654f0432f34e8">SCARD_SCOPE_GLOBAL</a> - Not used.</li>
<li><a class="el" href="pcsclite_8h.html#a01ffeed2d7fac470371c79fa86b1e309">SCARD_SCOPE_SYSTEM</a> - Services on the local machine. </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pvReserved1</td><td>Reserved for future use. Can be used for remote connection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pvReserved2</td><td>Reserved for future use. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">phContext</td><td>Returned reference to this connection.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Connection status. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">SCARD_S_SUCCESS</td><td>Successful (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_INVALID_PARAMETER</td><td><code>phContext</code> is null. (<a class="el" href="pcsclite_8h.html#a47a6da10ec4ea2cbebfcc4b2a93d786f">SCARD_E_INVALID_PARAMETER</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_INVALID_VALUE</td><td>Invalid scope type passed (<a class="el" href="pcsclite_8h.html#a9ece9fd9e68e4f802e16e951f8f2a642">SCARD_E_INVALID_VALUE</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_NO_MEMORY</td><td>There is no free slot to store <code>hContext</code> (<a class="el" href="pcsclite_8h.html#a81694393a1494d5091145734a2f0b36c">SCARD_E_NO_MEMORY</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_NO_SERVICE</td><td>The server is not runing (<a class="el" href="pcsclite_8h.html#ad4729ab109ff490285d2ad881c04bee8">SCARD_E_NO_SERVICE</a>) </td></tr>
    <tr><td class="paramname">SCARD_F_COMM_ERROR</td><td>An internal communications error has been detected (<a class="el" href="pcsclite_8h.html#a93d3cf468d69423eab1d478a7a870408">SCARD_F_COMM_ERROR</a>) </td></tr>
    <tr><td class="paramname">SCARD_F_INTERNAL_ERROR</td><td>An internal consistency check failed (<a class="el" href="pcsclite_8h.html#a081a564acaf166f74592906f7dff2d86">SCARD_F_INTERNAL_ERROR</a>) </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l00498">498</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>References <a class="el" href="winscard__msg_8c_source.html#l00090">ClientSetupSession()</a>, <a class="el" href="winscard__msg_8h_source.html#l00071">CMD_VERSION</a>, <a class="el" href="winscard__msg_8h_source.html#l00035">version_struct::major</a>, <a class="el" href="winscard__msg_8c_source.html#l00415">MessageReceive()</a>, <a class="el" href="winscard__msg_8c_source.html#l00281">MessageSendWithHeader()</a>, <a class="el" href="winscard__msg_8h_source.html#l00036">version_struct::minor</a>, <a class="el" href="winscard__msg_8h_source.html#l00026">PROTOCOL_VERSION_MAJOR</a>, <a class="el" href="winscard__msg_8h_source.html#l00028">PROTOCOL_VERSION_MINOR</a>, <a class="el" href="pcsclite_8h_source.html#l00084">SCARD_E_INVALID_PARAMETER</a>, <a class="el" href="pcsclite_8h_source.html#l00086">SCARD_E_NO_MEMORY</a>, <a class="el" href="pcsclite_8h_source.html#l00109">SCARD_E_NO_SERVICE</a>, <a class="el" href="winscard__msg_8h_source.html#l00055">SCARD_ESTABLISH_CONTEXT</a>, <a class="el" href="pcsclite_8h_source.html#l00099">SCARD_F_COMM_ERROR</a>, <a class="el" href="pcsclite_8h_source.html#l00080">SCARD_S_SUCCESS</a>, <a class="el" href="winscard__clnt_8c_source.html#l03300">SCardAddContext()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardGetContextTH()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00443">SCardEstablishContext()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="winscard__clnt_8c_aa86f1a8ccfbdbe7c64eea5219c7639e6_cgraph.png" border="0" usemap="#winscard__clnt_8c_aa86f1a8ccfbdbe7c64eea5219c7639e6_cgraph" alt=""/></div>
<map name="winscard__clnt_8c_aa86f1a8ccfbdbe7c64eea5219c7639e6_cgraph" id="winscard__clnt_8c_aa86f1a8ccfbdbe7c64eea5219c7639e6_cgraph">
<area shape="rect" id="node3" href="winscard__msg_8c.html#a616a7d779449d1dc6a8a5d925d8212b1" title="Prepares a communication channel for the client to talk to the server." alt="" coords="252,5,388,35"/><area shape="rect" id="node5" href="winscard__msg_8c.html#adbb09969d5d410393ae441b9a18c7a0c" title="Called by the Client to get the reponse from the server or vice&#45;versa." alt="" coords="259,59,381,88"/><area shape="rect" id="node7" href="winscard__msg_8c.html#a922f8b35802c2449f80a9bd02a25b05b" title="Wrapper for the MessageSend() function." alt="" coords="233,112,407,141"/><area shape="rect" id="node11" href="winscard__clnt_8c.html#ac75190d70d571bca9915bef60491534a" title="Functions for managing instances of SCardEstablishContext() These functions keep track of Context han..." alt="" coords="256,165,384,195"/><area shape="rect" id="node13" href="winscard__clnt_8c.html#aafd00ba256e4ba8a81491c970ee336ed" title="Get the address from the Application Context list _psContextMap for the passed context." alt="" coords="248,219,392,248"/><area shape="rect" id="node9" href="winscard__msg_8c.html#aacd09139ce5667d3b651de29c0d62057" title="Sends a menssage from client to server or vice&#45;versa." alt="" coords="457,112,561,141"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a8a3c749483d20ff887797b0879244699"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContext" ref="a8a3c749483d20ff887797b0879244699" args="(SCARDCONTEXT hContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> * SCardGetContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>&#160;</td>
          <td class="paramname"><em>hContext</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context. </p>
<p>This function is a thread-safe wrapper to the function <a class="el" href="winscard__clnt_8c.html#aafd00ba256e4ba8a81491c970ee336ed" title="Get the address from the Application Context list _psContextMap for the passed context.">SCardGetContextTH()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hContext</td><td>Application Context whose index will be find.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Index corresponding to the Application Context or -1 if it is not found. </dd></dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l03372">3372</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>References <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardGetContextTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00392">SCardLockThread()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00402">SCardUnlockThread()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03174">SCardCancel()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00778">SCardConnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03000">SCardFreeMemory()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01716">SCardGetStatusChange()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03258">SCardIsValidContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03074">SCardListReaderGroups()</a>, <a class="el" href="winscard__clnt_8c_source.html#l02872">SCardListReaders()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00650">SCardReleaseContext()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="winscard__clnt_8c_a8a3c749483d20ff887797b0879244699_cgraph.png" border="0" usemap="#winscard__clnt_8c_a8a3c749483d20ff887797b0879244699_cgraph" alt=""/></div>
<map name="winscard__clnt_8c_a8a3c749483d20ff887797b0879244699_cgraph" id="winscard__clnt_8c_a8a3c749483d20ff887797b0879244699_cgraph">
<area shape="rect" id="node3" href="winscard__clnt_8c.html#aafd00ba256e4ba8a81491c970ee336ed" title="Get the address from the Application Context list _psContextMap for the passed context." alt="" coords="181,5,325,35"/><area shape="rect" id="node5" href="winscard__clnt_8c.html#a1f7e1b05b30f1e5a5cd62b2f925222fe" title="Locks a mutex so another thread must wait to use this function." alt="" coords="191,59,316,88"/><area shape="rect" id="node7" href="winscard__clnt_8c.html#a5dc8cab71db796c9e91329c22f4ebfa1" title="Unlocks a mutex so another thread may use the client." alt="" coords="184,112,323,141"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aafd00ba256e4ba8a81491c970ee336ed"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContextTH" ref="aafd00ba256e4ba8a81491c970ee336ed" args="(SCARDCONTEXT hContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="struct__psContextMap.html">SCONTEXTMAP</a> * SCardGetContextTH </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>&#160;</td>
          <td class="paramname"><em>hContext</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the address from the Application Context list <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context. </p>
<p>This functions is not thread-safe and should not be called. Instead, call the function <a class="el" href="winscard__clnt_8c.html#a8a3c749483d20ff887797b0879244699" title="Get the index from the Application Context vector _psContextMap for the passed context.">SCardGetContext()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hContext</td><td>Application Context whose index will be find.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Address corresponding to the Application Context or NULL if it is not found. </dd></dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l03395">3395</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00498">SCardEstablishContextTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03372">SCardGetContext()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l03409">SCardRemoveContext()</a>.</p>

</div>
</div>
<a class="anchor" id="a1f7e1b05b30f1e5a5cd62b2f925222fe"></a><!-- doxytag: member="winscard_clnt.c::SCardLockThread" ref="a1f7e1b05b30f1e5a5cd62b2f925222fe" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardLockThread </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Locks a mutex so another thread must wait to use this function. </p>
<p>Wrapper to the function pthread_mutex_lock(). </p>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l00392">392</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00443">SCardEstablishContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03372">SCardGetContext()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00650">SCardReleaseContext()</a>.</p>

</div>
</div>
<a class="anchor" id="a7e3dc878020f1e5ccdae1a6914abd3b0"></a><!-- doxytag: member="winscard_clnt.c::SCardRemoveContext" ref="a7e3dc878020f1e5ccdae1a6914abd3b0" args="(SCARDCONTEXT hContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardRemoveContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>&#160;</td>
          <td class="paramname"><em>hContext</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removes an Application Context from a control vector. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hContext</td><td>Application Context to be removed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error code. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">SCARD_S_SUCCESS</td><td>Success (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td class="paramname">SCARD_E_INVALID_HANDLE</td><td>The context <code>hContext</code> was not found (<a class="el" href="pcsclite_8h.html#a05bdea2f2341e78d920885d1cc357676">SCARD_E_INVALID_HANDLE</a>) </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l03409">3409</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>References <a class="el" href="pcsclite_8h_source.html#l00083">SCARD_E_INVALID_HANDLE</a>, and <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardGetContextTH()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00650">SCardReleaseContext()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="winscard__clnt_8c_a7e3dc878020f1e5ccdae1a6914abd3b0_cgraph.png" border="0" usemap="#winscard__clnt_8c_a7e3dc878020f1e5ccdae1a6914abd3b0_cgraph" alt=""/></div>
<map name="winscard__clnt_8c_a7e3dc878020f1e5ccdae1a6914abd3b0_cgraph" id="winscard__clnt_8c_a7e3dc878020f1e5ccdae1a6914abd3b0_cgraph">
<area shape="rect" id="node3" href="winscard__clnt_8c.html#aafd00ba256e4ba8a81491c970ee336ed" title="Get the address from the Application Context list _psContextMap for the passed context." alt="" coords="208,5,352,35"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a5dc8cab71db796c9e91329c22f4ebfa1"></a><!-- doxytag: member="winscard_clnt.c::SCardUnlockThread" ref="a5dc8cab71db796c9e91329c22f4ebfa1" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardUnlockThread </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unlocks a mutex so another thread may use the client. </p>
<p>Wrapper to the function pthread_mutex_unlock(). </p>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l00402">402</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00443">SCardEstablishContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03372">SCardGetContext()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00650">SCardReleaseContext()</a>.</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a5fcdb76a493df6af8c2c9983cf38437d"></a><!-- doxytag: member="winscard_clnt.c::clientMutex" ref="a5fcdb76a493df6af8c2c9983cf38437d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">pthread_mutex_t <a class="el" href="winscard__clnt_8c.html#a5fcdb76a493df6af8c2c9983cf38437d">clientMutex</a> = PTHREAD_MUTEX_INITIALIZER<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Ensure that some functions be accessed in thread-safe mode. </p>
<p>These function's names finishes with "TH". </p>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l00339">339</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 15 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.4 </small></address>
</body>
</html>