Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 8db5617ff88aacc3075d0be1db459900 > files > 229

pcsc-lite-doc-1.8.11-4.mga5.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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>pcsc-lite: winscard_svc.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<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.8.11</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
  <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>
    </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_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</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_svc.c File Reference</div>  </div>
</div><!--header-->
<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;<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="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 />
<code>#include &quot;auth.h&quot;</code><br />
</div>
<p><a href="winscard__svc_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><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 class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a893248cb55578669c0eaf75bda3ddf05"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>READ_BODY</b>(v)</td></tr>
<tr class="separator:a893248cb55578669c0eaf75bda3ddf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6772f308132c6f99079b9ecaa2b37941"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6772f308132c6f99079b9ecaa2b37941"></a>
#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 class="separator:a6772f308132c6f99079b9ecaa2b37941"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9882019e85b8ae848e250b8474b82201"><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 class="separator:a9882019e85b8ae848e250b8474b82201"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a831feb6e3012cab232571cf1c641504e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a831feb6e3012cab232571cf1c641504e"></a>
typedef struct <a class="el" href="struct__psContext.html">_psContext</a>&#160;</td><td class="memItemRight" valign="bottom"><b>SCONTEXT</b></td></tr>
<tr class="separator:a831feb6e3012cab232571cf1c641504e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a64b7215e13a18204dcc3807482d9e221"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64b7215e13a18204dcc3807482d9e221"></a>
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 class="separator:a64b7215e13a18204dcc3807482d9e221"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa1d4c2e560b1a592d9ebd32bd26850f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa1d4c2e560b1a592d9ebd32bd26850f"></a>
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 class="separator:afa1d4c2e560b1a592d9ebd32bd26850f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cbc63cb9b0a5a9b204f745cc5e84485"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cbc63cb9b0a5a9b204f745cc5e84485"></a>
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 class="separator:a5cbc63cb9b0a5a9b204f745cc5e84485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38e1e62f596d3adc94bfa6c35401bbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab38e1e62f596d3adc94bfa6c35401bbe"></a>
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 class="separator:ab38e1e62f596d3adc94bfa6c35401bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45298e9230f1d820338c4b7cfbe082ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45298e9230f1d820338c4b7cfbe082ce"></a>
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 class="separator:a45298e9230f1d820338c4b7cfbe082ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06d4b52992db08a8d5f201982e750808"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d4b52992db08a8d5f201982e750808"></a>
static LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGCleanupClient</b> (<a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr class="separator:a06d4b52992db08a8d5f201982e750808"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4ec16bb7f8ada0a135e761912179770"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4ec16bb7f8ada0a135e761912179770"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>ContextThread</b> (LPVOID pdwIndex)</td></tr>
<tr class="separator:ab4ec16bb7f8ada0a135e761912179770"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1938c90ddc65822c207113af8ffdac9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1938c90ddc65822c207113af8ffdac9a"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextsListhContext_seeker</b> (const void *el, const void *key)</td></tr>
<tr class="separator:a1938c90ddc65822c207113af8ffdac9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14445244f55f3d2fe913724dfff9281b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14445244f55f3d2fe913724dfff9281b"></a>
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>ContextsInitialize</b> (int customMaxThreadCounter, int customMaxThreadCardHandles)</td></tr>
<tr class="separator:a14445244f55f3d2fe913724dfff9281b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ff1c5c3e490d5005d38147a9d0c7329"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ff1c5c3e490d5005d38147a9d0c7329"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>ContextsDeinitialize</b> (void)</td></tr>
<tr class="separator:a8ff1c5c3e490d5005d38147a9d0c7329"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6197ae4c69296f7c85c7122d5169033b"><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 class="memdesc:a6197ae4c69296f7c85c7122d5169033b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates threads to handle messages received from Clients.  <a href="#a6197ae4c69296f7c85c7122d5169033b">More...</a><br /></td></tr>
<tr class="separator:a6197ae4c69296f7c85c7122d5169033b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af934d98dd7253c538c646f85afdd8627"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af934d98dd7253c538c646f85afdd8627"></a>
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGSignalClient</b> (uint32_t filedes, LONG rv)</td></tr>
<tr class="separator:af934d98dd7253c538c646f85afdd8627"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ad41ba79cd2bc62973c95f29d1292b0a6"><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 class="memdesc:ad41ba79cd2bc62973c95f29d1292b0a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents an Application Context on the Server side.  <a href="#ad41ba79cd2bc62973c95f29d1292b0a6">More...</a><br /></td></tr>
<tr class="separator:ad41ba79cd2bc62973c95f29d1292b0a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d51c3bbfdeabf8800d7dcaf98e2949"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95d51c3bbfdeabf8800d7dcaf98e2949"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextMaxThreadCounter</b> = PCSC_MAX_CONTEXT_THREADS</td></tr>
<tr class="separator:a95d51c3bbfdeabf8800d7dcaf98e2949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefe523591bb3d3639c2380ea328dd22c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe523591bb3d3639c2380ea328dd22c"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>contextMaxCardHandles</b> = PCSC_MAX_CONTEXT_CARD_HANDLES</td></tr>
<tr class="separator:aefe523591bb3d3639c2380ea328dd22c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88deac193f649cdf5bd8e1c2cc4d5e65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88deac193f649cdf5bd8e1c2cc4d5e65"></a>
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 class="memdesc:a88deac193f649cdf5bd8e1c2cc4d5e65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context tracking list. <br /></td></tr>
<tr class="separator:a88deac193f649cdf5bd8e1c2cc4d5e65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae4a28a9a80802019c27e36ff81e93da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae4a28a9a80802019c27e36ff81e93da"></a>
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 class="memdesc:aae4a28a9a80802019c27e36ff81e93da"><td class="mdescLeft">&#160;</td><td class="mdescRight">lock for the above list <br /></td></tr>
<tr class="separator:aae4a28a9a80802019c27e36ff81e93da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad70f4ad5a6e9b001970ee9afc2130875"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad70f4ad5a6e9b001970ee9afc2130875"></a>
<a class="el" href="eventhandler_8h.html#a14acdf20e86897434649f849c17f9ea6">READER_STATE</a>&#160;</td><td class="memItemRight" valign="bottom"><b>readerStates</b> [<a class="el" href="pcsclite_8h.html#af750e6e22c809de2b523c17e4a092036">PCSCLITE_MAX_READERS_CONTEXTS</a>]</td></tr>
<tr class="separator:ad70f4ad5a6e9b001970ee9afc2130875"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e0939c34e53323d54001986fe0ef3d8"><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 class="memdesc:a7e0939c34e53323d54001986fe0ef3d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles messages received from Clients.  <a href="#a7e0939c34e53323d54001986fe0ef3d8">More...</a><br /></td></tr>
<tr class="separator:a7e0939c34e53323d54001986fe0ef3d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a893248cb55578669c0eaf75bda3ddf05"></a>
<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"><div class="line"><span class="keywordflow">if</span> (header.size != <span class="keyword">sizeof</span>(v)) { <span class="keywordflow">goto</span> wrong_length; } \</div>
<div class="line">    ret = <a class="code" href="winscard__msg_8c.html#adbb09969d5d410393ae441b9a18c7a0c">MessageReceive</a>(&amp;v, <span class="keyword">sizeof</span>(v), filedes); \</div>
<div class="line">    if (ret != <a class="code" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) { Log2(PCSC_LOG_DEBUG, <span class="stringliteral">&quot;Client die: %d&quot;</span>, filedes); <span class="keywordflow">goto</span> exit; }</div>
<div class="ttc" id="winscard__msg_8c_html_adbb09969d5d410393ae441b9a18c7a0c"><div class="ttname"><a href="winscard__msg_8c.html#adbb09969d5d410393ae441b9a18c7a0c">MessageReceive</a></div><div class="ttdeci">INTERNAL LONG MessageReceive(void *buffer_void, uint64_t buffer_size, int32_t filedes)</div><div class="ttdoc">Called by the Client to get the reponse from the server or vice-versa. </div><div class="ttdef"><b>Definition:</b> <a href="winscard__msg_8c_source.html#l00448">winscard_msg.c:448</a></div></div>
<div class="ttc" id="pcsclite_8h_html_a4a3c56f69570971d366642a563b34a75"><div class="ttname"><a href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a></div><div class="ttdeci">#define SCARD_S_SUCCESS</div><div class="ttdoc">error codes from http://msdn.microsoft.com/en-us/library/aa924526.aspx </div><div class="ttdef"><b>Definition:</b> <a href="pcsclite_8h_source.html#l00106">pcsclite.h:106</a></div></div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00311">311</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>
<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"><div class="line">Log4(PCSC_LOG_DEBUG, <span class="stringliteral">&quot;%s rv=0x%X for client %d&quot;</span>, command, v.rv, filedes); \</div>
<div class="line">    ret = <a class="code" href="winscard__msg_8c.html#aacd09139ce5667d3b651de29c0d62057">MessageSend</a>(&amp;v, <span class="keyword">sizeof</span>(v), filedes);</div>
<div class="ttc" id="winscard__msg_8c_html_aacd09139ce5667d3b651de29c0d62057"><div class="ttname"><a href="winscard__msg_8c.html#aacd09139ce5667d3b651de29c0d62057">MessageSend</a></div><div class="ttdeci">INTERNAL LONG MessageSend(void *buffer_void, uint64_t buffer_size, int32_t filedes)</div><div class="ttdoc">Sends a menssage from client to server or vice-versa. </div><div class="ttdef"><b>Definition:</b> <a href="winscard__msg_8c_source.html#l00350">winscard_msg.c:350</a></div></div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="winscard__svc_8c_source.html#l00318">318</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a6197ae4c69296f7c85c7122d5169033b"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>Error code. </dd></dl>
<dl class="retval"><dt>Return values</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#l00173">173</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#l00084">AutoExit</a>, <a class="el" href="winscard__svc_8c_source.html#l00090">_psContext::cardsList_lock</a>, <a class="el" href="winscard__svc_8c_source.html#l00084">contextsList_lock</a>, <a class="el" href="winscard__svc_8c_source.html#l00091">_psContext::dwClientID</a>, <a class="el" href="winscard__svc_8c_source.html#l00092">_psContext::pthThread</a>, <a class="el" href="pcsclite_8h_source.html#l00112">SCARD_E_NO_MEMORY</a>, and <a class="el" href="pcsclite_8h_source.html#l00106">SCARD_S_SUCCESS</a>.</p>

<p>Referenced by <a class="el" href="pcscdaemon_8c_source.html#l00110">SVCServiceRunLoop()</a>.</p>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ad41ba79cd2bc62973c95f29d1292b0a6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char AutoExit</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#l00084">84</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#l00173">CreateContextThread()</a>.</p>

</div>
</div>
<a class="anchor" id="a7e0939c34e53323d54001986fe0ef3d8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char* CommandsText[]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line">    <span class="stringliteral">&quot;NULL&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;ESTABLISH_CONTEXT&quot;</span>,    </div>
<div class="line">    <span class="stringliteral">&quot;RELEASE_CONTEXT&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;LIST_READERS&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CONNECT&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;RECONNECT&quot;</span>,            </div>
<div class="line">    <span class="stringliteral">&quot;DISCONNECT&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;BEGIN_TRANSACTION&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;END_TRANSACTION&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;TRANSMIT&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CONTROL&quot;</span>,              </div>
<div class="line">    <span class="stringliteral">&quot;STATUS&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;GET_STATUS_CHANGE&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CANCEL&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CANCEL_TRANSACTION&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;GET_ATTRIB&quot;</span>,           </div>
<div class="line">    <span class="stringliteral">&quot;SET_ATTRIB&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CMD_VERSION&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CMD_GET_READERS_STATE&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CMD_WAIT_READER_STATE_CHANGE&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;CMD_STOP_WAITING_READER_STATE_CHANGE&quot;</span>, </div>
<div class="line">    <span class="stringliteral">&quot;NULL&quot;</span></div>
<div class="line">}</div>
</div><!-- fragment -->
<p>Handles messages received from Clients. </p>
<p>For each Client message a new instance of this thread is created.</p>
<dl class="params"><dt>Parameters</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#l00285">285</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Oct 15 2014 11:57:56 for pcsc-lite by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.8
</small></address>
</body>
</html>