Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > c875c5048f444faf6c3a434137f1088a > files > 219

pcsc-lite-doc-1.8.26-1.mga7.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<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 id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">pcsc-lite
   &#160;<span id="projectnumber">1.8.26</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></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 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 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 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 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 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 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 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:a08b0e4d14fb35933540d6ad520f42464"><td class="memItemLeft" align="right" valign="top"><a id="a08b0e4d14fb35933540d6ad520f42464"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>MSGCleanupClient</b> (<a class="el" href="struct__psContext.html">SCONTEXT</a> *)</td></tr>
<tr class="separator:a08b0e4d14fb35933540d6ad520f42464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5120c6ae866ab4d922772656698572a3"><td class="memItemLeft" align="right" valign="top"><a id="a5120c6ae866ab4d922772656698572a3"></a>
static void *&#160;</td><td class="memItemRight" valign="bottom"><b>ContextThread</b> (LPVOID pdwIndex)</td></tr>
<tr class="separator:a5120c6ae866ab4d922772656698572a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1938c90ddc65822c207113af8ffdac9a"><td class="memItemLeft" align="right" valign="top"><a 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 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 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 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>
<tr class="memitem:a554041db880b00e43e7ccefd42830275"><td class="memItemLeft" align="right" valign="top"><a id="a554041db880b00e43e7ccefd42830275"></a>
LONG&#160;</td><td class="memItemRight" valign="bottom"><b>MSGSendReaderStates</b> (uint32_t filedes)</td></tr>
<tr class="separator:a554041db880b00e43e7ccefd42830275"><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 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 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 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 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 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 class="definition">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 id="a893248cb55578669c0eaf75bda3ddf05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a893248cb55578669c0eaf75bda3ddf05">&#9670;&nbsp;</a></span>READ_BODY</h2>

<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">do</span> { \</div><div class="line">        if (header.size != <span class="keyword">sizeof</span>(v)) \</div><div class="line">            goto 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="group__ErrorCodes.html#ga4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) { \</div><div class="line">            Log2(PCSC_LOG_DEBUG, <span class="stringliteral">&quot;Client die: %d&quot;</span>, filedes); \</div><div class="line">            goto exit; \</div><div class="line">        } \</div><div class="line">    } <span class="keywordflow">while</span> (0)</div><div class="ttc" id="group__ErrorCodes_html_ga4a3c56f69570971d366642a563b34a75"><div class="ttname"><a href="group__ErrorCodes.html#ga4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a></div><div class="ttdeci">#define SCARD_S_SUCCESS</div><div class="ttdoc">No error was encountered.</div><div class="ttdef"><b>Definition:</b> <a href="pcsclite_8h_source.html#l00107">pcsclite.h:107</a></div></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#l00457">winscard_msg.c:457</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="winscard__svc_8c_source.html#l00309">309</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
<a id="a9882019e85b8ae848e250b8474b82201"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9882019e85b8ae848e250b8474b82201">&#9670;&nbsp;</a></span>WRITE_BODY_WITH_COMMAND</h2>

<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"><span class="keywordflow">do</span> { \</div><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="line">    } <span class="keywordflow">while</span> (0)</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#l00357">winscard_msg.c:357</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="winscard__svc_8c_source.html#l00322">322</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 id="a6197ae4c69296f7c85c7122d5169033b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6197ae4c69296f7c85c7122d5169033b">&#9670;&nbsp;</a></span>CreateContextThread()</h2>

<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 class="definition">Definition at line <a class="el" href="winscard__svc_8c_source.html#l00171">171</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ad41ba79cd2bc62973c95f29d1292b0a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad41ba79cd2bc62973c95f29d1292b0a6">&#9670;&nbsp;</a></span>AutoExit</h2>

<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 class="definition">Definition at line <a class="el" href="pcscdaemon_8c_source.html#l00080">80</a> of file <a class="el" href="pcscdaemon_8c_source.html">pcscdaemon.c</a>.</p>

</div>
</div>
<a id="a7e0939c34e53323d54001986fe0ef3d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e0939c34e53323d54001986fe0ef3d8">&#9670;&nbsp;</a></span>CommandsText</h2>

<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 class="definition">Definition at line <a class="el" href="winscard__svc_8c_source.html#l00283">283</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 Jan 8 2020 17:42:35 for pcsc-lite by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>