Sophie

Sophie

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

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: winscard_svc.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="#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">
<h1>winscard_svc.c File Reference</h1>  </div>
</div>
<div class="contents">

<p>This demarshalls functions over the message queue and keeps track of clients and their handles.  
<a href="#_details">More...</a></p>
<div class="textblock"><code>#include &quot;config.h&quot;</code><br/>
<code>#include &lt;time.h&gt;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;pthread.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="pcscd_8h_source.html">pcscd.h</a>&quot;</code><br/>
<code>#include &quot;winscard.h&quot;</code><br/>
<code>#include &quot;debuglog.h&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;<a class="el" href="winscard__svc_8h_source.html">winscard_svc.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;utils.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="eventhandler_8h_source.html">eventhandler.h</a>&quot;</code><br/>
<code>#include &quot;simclist.h&quot;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for winscard_svc.c:</div>
<div class="dyncontent">
<div class="center"><img src="winscard__svc_8c__incl.png" border="0" usemap="#winscard__svc_8c" alt=""/></div>
<map name="winscard__svc_8c" id="winscard__svc_8c">
<area shape="rect" id="node19" href="pcscd_8h.html" title="This keeps a list of defines for pcsc&#45;lite." alt="" coords="660,237,727,267"/><area shape="rect" id="node25" href="winscard__msg_8h.html" title="This defines some structures and #defines to be used over the transport layer." alt="" coords="1125,83,1243,112"/><area shape="rect" id="node29" href="winscard__svc_8h.html" title="This demarshalls functions over the message queue and keeps track of clients and their handles..." alt="" coords="1397,83,1509,112"/><area shape="rect" id="node31" href="sys__generic_8h.html" title="This handles abstract system level calls." alt="" coords="1533,83,1635,112"/><area shape="rect" id="node37" href="utils_8h_source.html" title="utils.h" alt="" coords="827,83,883,112"/><area shape="rect" id="node43" href="readerfactory_8h.html" title="This keeps track of a list of currently available reader structures." alt="" coords="725,160,835,189"/><area shape="rect" id="node51" href="simclist_8h_source.html" title="simclist.h" alt="" coords="913,237,991,267"/><area shape="rect" id="node58" href="eventhandler_8h.html" title="This handles card insertion/removal events, updates ATR, protocol, and status information." alt="" coords="1267,83,1373,112"/></map>
</div>
</div>
<p><a href="winscard__svc_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__psContext.html">_psContext</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>READ_BODY</b>(v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6772f308132c6f99079b9ecaa2b37941"></a><!-- doxytag: member="winscard_svc.c::WRITE_BODY" ref="a6772f308132c6f99079b9ecaa2b37941" args="(v)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>WRITE_BODY</b>(v)&#160;&#160;&#160;WRITE_BODY_WITH_COMMAND(<a class="el" href="winscard__svc_8c.html#a7e0939c34e53323d54001986fe0ef3d8">CommandsText</a>[header.command], v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>WRITE_BODY_WITH_COMMAND</b>(command, v)</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="a831feb6e3012cab232571cf1c641504e"></a><!-- doxytag: member="winscard_svc.c::SCONTEXT" ref="a831feb6e3012cab232571cf1c641504e" args="" -->
typedef struct <a class="el" href="struct__psContext.html">_psContext</a>&#160;</td><td class="memItemRight" valign="bottom"><b>SCONTEXT</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="a64b7215e13a18204dcc3807482d9e221"></a><!-- doxytag: member="winscard_svc.c::MSGCheckHandleAssociation" ref="a64b7215e13a18204dcc3807482d9e221" args="(SCARDHANDLE, SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGCheckHandleAssociation</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa1d4c2e560b1a592d9ebd32bd26850f"></a><!-- doxytag: member="winscard_svc.c::MSGAddContext" ref="afa1d4c2e560b1a592d9ebd32bd26850f" args="(SCARDCONTEXT, SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGAddContext</b> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>, <a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cbc63cb9b0a5a9b204f745cc5e84485"></a><!-- doxytag: member="winscard_svc.c::MSGRemoveContext" ref="a5cbc63cb9b0a5a9b204f745cc5e84485" args="(SCARDCONTEXT, SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGRemoveContext</b> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>, <a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab38e1e62f596d3adc94bfa6c35401bbe"></a><!-- doxytag: member="winscard_svc.c::MSGAddHandle" ref="ab38e1e62f596d3adc94bfa6c35401bbe" args="(SCARDCONTEXT, SCARDHANDLE, SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGAddHandle</b> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a>, <a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45298e9230f1d820338c4b7cfbe082ce"></a><!-- doxytag: member="winscard_svc.c::MSGRemoveHandle" ref="a45298e9230f1d820338c4b7cfbe082ce" args="(SCARDHANDLE, SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGRemoveHandle</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a>, <a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d4b52992db08a8d5f201982e750808"></a><!-- doxytag: member="winscard_svc.c::MSGCleanupClient" ref="a06d4b52992db08a8d5f201982e750808" args="(SCONTEXT *)" -->
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGCleanupClient</b> (<a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4ec16bb7f8ada0a135e761912179770"></a><!-- doxytag: member="winscard_svc.c::ContextThread" ref="ab4ec16bb7f8ada0a135e761912179770" args="(LPVOID pdwIndex)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>ContextThread</b> (LPVOID pdwIndex)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1938c90ddc65822c207113af8ffdac9a"></a><!-- doxytag: member="winscard_svc.c::contextsListhContext_seeker" ref="a1938c90ddc65822c207113af8ffdac9a" args="(const void *el, const void *key)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextsListhContext_seeker</b> (const void *el, const void *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14445244f55f3d2fe913724dfff9281b"></a><!-- doxytag: member="winscard_svc.c::ContextsInitialize" ref="a14445244f55f3d2fe913724dfff9281b" args="(int customMaxThreadCounter, int customMaxThreadCardHandles)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>ContextsInitialize</b> (int customMaxThreadCounter, int customMaxThreadCardHandles)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ff1c5c3e490d5005d38147a9d0c7329"></a><!-- doxytag: member="winscard_svc.c::ContextsDeinitialize" ref="a8ff1c5c3e490d5005d38147a9d0c7329" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ContextsDeinitialize</b> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a6197ae4c69296f7c85c7122d5169033b">CreateContextThread</a> (uint32_t *pdwClientID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates threads to handle messages received from Clients.  <a href="#a6197ae4c69296f7c85c7122d5169033b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af934d98dd7253c538c646f85afdd8627"></a><!-- doxytag: member="winscard_svc.c::MSGSignalClient" ref="af934d98dd7253c538c646f85afdd8627" args="(uint32_t filedes, LONG rv)" -->
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGSignalClient</b> (uint32_t filedes, LONG rv)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#ad41ba79cd2bc62973c95f29d1292b0a6">AutoExit</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents an Application Context on the Server side.  <a href="#ad41ba79cd2bc62973c95f29d1292b0a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95d51c3bbfdeabf8800d7dcaf98e2949"></a><!-- doxytag: member="winscard_svc.c::contextMaxThreadCounter" ref="a95d51c3bbfdeabf8800d7dcaf98e2949" args="" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextMaxThreadCounter</b> = PCSC_MAX_CONTEXT_THREADS</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe523591bb3d3639c2380ea328dd22c"></a><!-- doxytag: member="winscard_svc.c::contextMaxCardHandles" ref="aefe523591bb3d3639c2380ea328dd22c" args="" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextMaxCardHandles</b> = PCSC_MAX_CONTEXT_CARD_HANDLES</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88deac193f649cdf5bd8e1c2cc4d5e65"></a><!-- doxytag: member="winscard_svc.c::contextsList" ref="a88deac193f649cdf5bd8e1c2cc4d5e65" args="" -->
static <a class="el" href="structlist__t.html">list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a88deac193f649cdf5bd8e1c2cc4d5e65">contextsList</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Context tracking list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae4a28a9a80802019c27e36ff81e93da"></a><!-- doxytag: member="winscard_svc.c::contextsList_lock" ref="aae4a28a9a80802019c27e36ff81e93da" args="" -->
pthread_mutex_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#aae4a28a9a80802019c27e36ff81e93da">contextsList_lock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">lock for the above list <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad70f4ad5a6e9b001970ee9afc2130875"></a><!-- doxytag: member="winscard_svc.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">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a7e0939c34e53323d54001986fe0ef3d8">CommandsText</a> []</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles messages received from Clients.  <a href="#a7e0939c34e53323d54001986fe0ef3d8"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This demarshalls functions over the message queue and keeps track of clients and their handles. </p>
<p>Each Client message is deald by creating a thread (<code>CreateContextThread</code>). The thread establishes reands and demarshalls the message and calls the appropriate function to threat it. </p>

<p>Definition in file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a893248cb55578669c0eaf75bda3ddf05"></a><!-- doxytag: member="winscard_svc.c::READ_BODY" ref="a893248cb55578669c0eaf75bda3ddf05" args="(v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define READ_BODY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">v</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">if</span> (header.size != <span class="keyword">sizeof</span>(v)) { <span class="keywordflow">goto</span> wrong_length; } \
    ret = <a class="code" href="winscard__msg_8c.html#adbb09969d5d410393ae441b9a18c7a0c" title="Called by the Client to get the reponse from the server or vice-versa.">MessageReceive</a>(&amp;v, <span class="keyword">sizeof</span>(v), filedes); \
    <span class="keywordflow">if</span> (ret != <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>) { Log2(PCSC_LOG_DEBUG, <span class="stringliteral">&quot;Client die: %d&quot;</span>, filedes); <span class="keywordflow">goto</span> exit; }
</pre></div>
<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00280">280</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
<a class="anchor" id="a9882019e85b8ae848e250b8474b82201"></a><!-- doxytag: member="winscard_svc.c::WRITE_BODY_WITH_COMMAND" ref="a9882019e85b8ae848e250b8474b82201" args="(command, v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WRITE_BODY_WITH_COMMAND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">command, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">v&#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">Log4(<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> == v.rv ? PCSC_LOG_DEBUG : PCSC_LOG_ERROR, <span class="stringliteral">&quot;%s rv=0x%X for client %d&quot;</span>, command, v.rv, filedes); \
    ret = <a class="code" href="winscard__msg_8c.html#aacd09139ce5667d3b651de29c0d62057" title="Sends a menssage from client to server or vice-versa.">MessageSend</a>(&amp;v, <span class="keyword">sizeof</span>(v), filedes);
</pre></div>
<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00287">287</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a6197ae4c69296f7c85c7122d5169033b"></a><!-- doxytag: member="winscard_svc.c::CreateContextThread" ref="a6197ae4c69296f7c85c7122d5169033b" args="(uint32_t *pdwClientID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">LONG CreateContextThread </td>
          <td>(</td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>pdwClientID</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates threads to handle messages received from Clients. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pdwClientID</td><td>Connection ID used to reference the Client.</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. </td></tr>
    <tr><td class="paramname">SCARD_F_INTERNAL_ERROR</td><td>Exceded the maximum number of simultaneous Application Contexts. </td></tr>
    <tr><td class="paramname">SCARD_E_NO_MEMORY</td><td>Error creating the Context Thread. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00144">144</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

<p>References <a class="el" href="pcscdaemon_8c_source.html#l00056">AutoExit</a>, <a class="el" href="winscard__svc_8c_source.html#l00063">_psContext::cardsList_lock</a>, <a class="el" href="winscard__svc_8c_source.html#l00057">contextsList_lock</a>, <a class="el" href="winscard__svc_8c_source.html#l00064">_psContext::dwClientID</a>, <a class="el" href="winscard__svc_8c_source.html#l00065">_psContext::pthThread</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="pcscdaemon_8c_source.html#l00079">SVCServiceRunLoop()</a>.</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="ad41ba79cd2bc62973c95f29d1292b0a6"></a><!-- doxytag: member="winscard_svc.c::AutoExit" ref="ad41ba79cd2bc62973c95f29d1292b0a6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char <a class="el" href="winscard__svc_8c.html#ad41ba79cd2bc62973c95f29d1292b0a6">AutoExit</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Represents an Application Context on the Server side. </p>
<p>An Application Context contains Channels (<code>hCard</code>). </p>

<p>Definition at line <a class="el" href="pcscdaemon_8c_source.html#l00056">56</a> of file <a class="el" href="pcscdaemon_8c_source.html">pcscdaemon.c</a>.</p>

<p>Referenced by <a class="el" href="winscard__svc_8c_source.html#l00144">CreateContextThread()</a>.</p>

</div>
</div>
<a class="anchor" id="a7e0939c34e53323d54001986fe0ef3d8"></a><!-- doxytag: member="winscard_svc.c::CommandsText" ref="a7e0939c34e53323d54001986fe0ef3d8" args="[]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* <a class="el" href="winscard__svc_8c.html#a7e0939c34e53323d54001986fe0ef3d8">CommandsText</a>[]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
    <span class="stringliteral">&quot;NULL&quot;</span>,
    <span class="stringliteral">&quot;ESTABLISH_CONTEXT&quot;</span>,    
    <span class="stringliteral">&quot;RELEASE_CONTEXT&quot;</span>,
    <span class="stringliteral">&quot;LIST_READERS&quot;</span>,
    <span class="stringliteral">&quot;CONNECT&quot;</span>,
    <span class="stringliteral">&quot;RECONNECT&quot;</span>,            
    <span class="stringliteral">&quot;DISCONNECT&quot;</span>,
    <span class="stringliteral">&quot;BEGIN_TRANSACTION&quot;</span>,
    <span class="stringliteral">&quot;END_TRANSACTION&quot;</span>,
    <span class="stringliteral">&quot;TRANSMIT&quot;</span>,
    <span class="stringliteral">&quot;CONTROL&quot;</span>,              
    <span class="stringliteral">&quot;STATUS&quot;</span>,
    <span class="stringliteral">&quot;GET_STATUS_CHANGE&quot;</span>,
    <span class="stringliteral">&quot;CANCEL&quot;</span>,
    <span class="stringliteral">&quot;CANCEL_TRANSACTION&quot;</span>,
    <span class="stringliteral">&quot;GET_ATTRIB&quot;</span>,           
    <span class="stringliteral">&quot;SET_ATTRIB&quot;</span>,
    <span class="stringliteral">&quot;CMD_VERSION&quot;</span>,
    <span class="stringliteral">&quot;CMD_GET_READERS_STATE&quot;</span>,
    <span class="stringliteral">&quot;CMD_WAIT_READER_STATE_CHANGE&quot;</span>,
    <span class="stringliteral">&quot;CMD_STOP_WAITING_READER_STATE_CHANGE&quot;</span>, 
    <span class="stringliteral">&quot;NULL&quot;</span>
}
</pre></div>
<p>Handles messages received from Clients. </p>
<p>For each Client message a new instance of this thread is created.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dwIndex</td><td>Index of an avaiable Application Context slot in <code>SCONTEXT</code> *. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00254">254</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</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>