Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > 3ef085c66d4a743f8dec260630a0b19c > files > 323

pcsc-lite-doc-1.5.5-4.fc13.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.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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 class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_c68a5dfdca54003c765e303a18006edb.html">src</a>
  </div>
</div>
<div class="contents">
<h1>winscard_svc.c File Reference</h1>
<p>This demarshalls functions over the message queue and keeps track of clients and their handles.  
<a href="#_details">More...</a></p>
<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 &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;<a class="el" href="thread__generic_8h_source.html">thread_generic.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="readerfactory_8h_source.html">readerfactory.h</a>&quot;</code><br/>
<div class="dynheader">
Include dependency graph for winscard_svc.c:</div>
<div class="dynsection">
</div>

<p><a href="winscard__svc_8c_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__psContext.html">_psContext</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an Application Context on the Server side.  <a href="struct__psContext.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae33096de085ae8a76792272460ecdb75"></a><!-- doxytag: member="winscard_svc.c::MSGCheckHandleAssociation" ref="ae33096de085ae8a76792272460ecdb75" args="(SCARDHANDLE, DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGCheckHandleAssociation</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a2d9b20a22931ff9c0920d17e0744ef7f">MSGFunctionDemarshall</a> (<a class="el" href="structrxSharedSegment.html">psharedSegmentMsg</a> msgStruct, DWORD dwContextIndex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find out which message was sent by the Client and execute the right task.  <a href="#a2d9b20a22931ff9c0920d17e0744ef7f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc077ad8b4d7ed63e7a7dd16f392f07"></a><!-- doxytag: member="winscard_svc.c::MSGAddContext" ref="a7bc077ad8b4d7ed63e7a7dd16f392f07" args="(SCARDCONTEXT, DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGAddContext</b> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>, DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef9be716fb4b697e2becdbf2eea14641"></a><!-- doxytag: member="winscard_svc.c::MSGRemoveContext" ref="aef9be716fb4b697e2becdbf2eea14641" args="(SCARDCONTEXT, DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGRemoveContext</b> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>, DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a972058c82420cb9bc8b9142ea5977068"></a><!-- doxytag: member="winscard_svc.c::MSGAddHandle" ref="a972058c82420cb9bc8b9142ea5977068" args="(SCARDCONTEXT, SCARDHANDLE, DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGAddHandle</b> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>, <a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad75afa173633f1438260581a7ee3e1c0"></a><!-- doxytag: member="winscard_svc.c::MSGRemoveHandle" ref="ad75afa173633f1438260581a7ee3e1c0" args="(SCARDHANDLE, DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGRemoveHandle</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64c6be911dddff704a58c5ec3ce4e423"></a><!-- doxytag: member="winscard_svc.c::MSGCleanupClient" ref="a64c6be911dddff704a58c5ec3ce4e423" args="(DWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>MSGCleanupClient</b> (DWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a10a1e7f5d0806084134a299398dbc81a">ContextThread</a> (LPVOID dwIndex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handles messages received from Clients.  <a href="#a10a1e7f5d0806084134a299398dbc81a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c2a5600ab20e5274f70e4a93937f38b"></a><!-- doxytag: member="winscard_svc.c::ContextsInitialize" ref="a4c2a5600ab20e5274f70e4a93937f38b" args="(void)" -->
LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>ContextsInitialize</b> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</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">&nbsp;</td><td class="mdescRight">Creates threads to handle messages received from Clients.  <a href="#a6197ae4c69296f7c85c7122d5169033b"></a><br/></td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static struct <a class="el" href="struct__psContext.html">_psContext</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__svc_8c.html#a4c383e648443031624ba0e312b75b30f">psContext</a> [PCSCLITE_MAX_APPLICATIONS_CONTEXTS]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an Application Context on the Server side.  <a href="#a4c383e648443031624ba0e312b75b30f"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<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>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a10a1e7f5d0806084134a299398dbc81a"></a><!-- doxytag: member="winscard_svc.c::ContextThread" ref="a10a1e7f5d0806084134a299398dbc81a" args="(LPVOID dwIndex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ContextThread </td>
          <td>(</td>
          <td class="paramtype">LPVOID&nbsp;</td>
          <td class="paramname"> <em>dwIndex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dwIndex</em>&nbsp;</td><td>Index of an avaiable Application Context slot in <code>psContext</code>. </td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="winscard__msg_8h_source.html#l00083">CMD_VERSION</a>, <a class="el" href="winscard__msg_8h_source.html#l00038">version_struct::major</a>, <a class="el" href="winscard__msg_8h_source.html#l00039">version_struct::minor</a>, <a class="el" href="winscard__svc_8c_source.html#l00256">MSGFunctionDemarshall()</a>, <a class="el" href="pcscd_8h_source.html#l00079">PCSCLITE_SERVER_ATTEMPTS</a>, <a class="el" href="winscard__svc_8c_source.html#l00049">_psContext::protocol_minor</a>, <a class="el" href="winscard__msg_8h_source.html#l00024">PROTOCOL_VERSION_MAJOR</a>, <a class="el" href="winscard__msg_8h_source.html#l00026">PROTOCOL_VERSION_MINOR</a>, <a class="el" href="winscard__svc_8c.html#a4c383e648443031624ba0e312b75b30f">psContext</a>, <a class="el" href="winscard__msg_8h_source.html#l00108">SCARD_CONTROL_EXTENDED</a>, <a class="el" href="pcsclite_8h_source.html#l00099">SCARD_E_NO_SERVICE</a>, <a class="el" href="pcsclite_8h_source.html#l00070">SCARD_S_SUCCESS</a>, <a class="el" href="winscard__msg_8h_source.html#l00107">SCARD_TRANSMIT_EXTENDED</a>, <a class="el" href="winscard__msg_8c_source.html#l00122">SHMClientCloseSession()</a>, <a class="el" href="winscard__msg_8c_source.html#l00143">SHMMessageSend()</a>, and <a class="el" href="winscard__msg__srv_8c_source.html#l00261">SHMProcessEventsContext()</a>.</p>

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

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<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 *&nbsp;</td>
          <td class="paramname"> <em>pdwClientID</em></td>
          <td>&nbsp;)&nbsp;</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 border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pdwClientID</em>&nbsp;</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 border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SCARD_S_SUCCESS</em>&nbsp;</td><td>Success. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_F_INTERNAL_ERROR</em>&nbsp;</td><td>Exceded the maximum number of simultaneous Application Contexts. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_NO_MEMORY</em>&nbsp;</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#l00078">78</a> of file <a class="el" href="winscard__svc_8c_source.html">winscard_svc.c</a>.</p>

<p>References <a class="el" href="winscard__svc_8c_source.html#l00126">ContextThread()</a>, <a class="el" href="winscard__svc_8c_source.html#l00046">_psContext::dwClientID</a>, <a class="el" href="pcscd_8h_source.html#l00054">PCSCLITE_MAX_APPLICATIONS_CONTEXTS</a>, <a class="el" href="winscard__svc_8c.html#a4c383e648443031624ba0e312b75b30f">psContext</a>, <a class="el" href="pcsclite_8h_source.html#l00076">SCARD_E_NO_MEMORY</a>, <a class="el" href="pcsclite_8h_source.html#l00071">SCARD_F_INTERNAL_ERROR</a>, <a class="el" href="pcsclite_8h_source.html#l00070">SCARD_S_SUCCESS</a>, and <a class="el" href="sys__unix_8c_source.html#l00143">SYS_CloseFile()</a>.</p>

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

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="a2d9b20a22931ff9c0920d17e0744ef7f"></a><!-- doxytag: member="winscard_svc.c::MSGFunctionDemarshall" ref="a2d9b20a22931ff9c0920d17e0744ef7f" args="(psharedSegmentMsg msgStruct, DWORD dwContextIndex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG MSGFunctionDemarshall </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrxSharedSegment.html">psharedSegmentMsg</a>&nbsp;</td>
          <td class="paramname"> <em>msgStruct</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DWORD&nbsp;</td>
          <td class="paramname"> <em>dwContextIndex</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Find out which message was sent by the Client and execute the right task. </p>
<p>According to the command type sent by the client (<code>pcsc_msg_commands</code>), cast the message data to the correct struct so that is can be demarshalled. Then call the appropriate function to handle the request.</p>
<p>Possible structs are: <code><a class="el" href="structestablish__struct.html" title="Information contained in SCARD_ESTABLISH_CONTEXT Messages.">establish_struct</a></code> <code><a class="el" href="structrelease__struct.html" title="Information contained in SCARD_RELEASE_CONTEXT Messages.">release_struct</a></code> <code><a class="el" href="structconnect__struct.html" title="contained in SCARD_CONNECT Messages.">connect_struct</a></code> <code><a class="el" href="structreconnect__struct.html" title="contained in SCARD_RECONNECT Messages.">reconnect_struct</a></code> <code><a class="el" href="structdisconnect__struct.html" title="contained in SCARD_DISCONNECT Messages.">disconnect_struct</a></code> <code><a class="el" href="structbegin__struct.html" title="contained in SCARD_BEGIN_TRANSACTION Messages.">begin_struct</a></code> <code><a class="el" href="structcancel__struct.html" title="contained in SCARD_CANCEL Messages.">cancel_struct</a></code> <code><a class="el" href="structend__struct.html" title="contained in SCARD_END_TRANSACTION Messages.">end_struct</a></code> <code><a class="el" href="structstatus__struct.html" title="contained in SCARD_STATUS Messages.">status_struct</a></code> <code><a class="el" href="structtransmit__struct.html" title="contained in SCARD_TRANSMIT Messages.">transmit_struct</a></code> <code><a class="el" href="structcontrol__struct.html" title="contained in SCARD_CONTROL Messages.">control_struct</a></code> <code><a class="el" href="structgetset__struct.html" title="contained in SCARD_GET_ATTRIB and Messages.">getset_struct</a></code>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>msgStruct</em>&nbsp;</td><td>Message to be demarshalled and executed. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dwContextIndex</em>&nbsp;</td><td></td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="pcsclite_8h_source.html#l00055">SCARD_IO_REQUEST::cbPciLength</a>, <a class="el" href="winscard__svc_8c_source.html#l00046">_psContext::dwClientID</a>, <a class="el" href="pcsclite_8h_source.html#l00054">SCARD_IO_REQUEST::dwProtocol</a>, <a class="el" href="pcsclite_8h_source.html#l00202">MAX_BUFFER_SIZE_EXTENDED</a>, <a class="el" href="pcscd_8h_source.html#l00076">PCSCLITE_MAX_MESSAGE_SIZE</a>, <a class="el" href="pcscd_8h_source.html#l00079">PCSCLITE_SERVER_ATTEMPTS</a>, <a class="el" href="winscard__svc_8c.html#a4c383e648443031624ba0e312b75b30f">psContext</a>, <a class="el" href="winscard__msg_8h_source.html#l00097">SCARD_BEGIN_TRANSACTION</a>, <a class="el" href="winscard__msg_8h_source.html#l00094">SCARD_CONNECT</a>, <a class="el" href="winscard__msg_8h_source.html#l00100">SCARD_CONTROL</a>, <a class="el" href="winscard__msg_8h_source.html#l00108">SCARD_CONTROL_EXTENDED</a>, <a class="el" href="winscard__msg_8h_source.html#l00096">SCARD_DISCONNECT</a>, <a class="el" href="pcsclite_8h_source.html#l00078">SCARD_E_INSUFFICIENT_BUFFER</a>, <a class="el" href="winscard__msg_8h_source.html#l00098">SCARD_END_TRANSACTION</a>, <a class="el" href="winscard__msg_8h_source.html#l00091">SCARD_ESTABLISH_CONTEXT</a>, <a class="el" href="winscard__msg_8h_source.html#l00105">SCARD_GET_ATTRIB</a>, <a class="el" href="winscard__msg_8h_source.html#l00095">SCARD_RECONNECT</a>, <a class="el" href="winscard__msg_8h_source.html#l00092">SCARD_RELEASE_CONTEXT</a>, <a class="el" href="pcsclite_8h_source.html#l00070">SCARD_S_SUCCESS</a>, <a class="el" href="winscard__msg_8h_source.html#l00106">SCARD_SET_ATTRIB</a>, <a class="el" href="winscard__msg_8h_source.html#l00101">SCARD_STATUS</a>, <a class="el" href="winscard__msg_8h_source.html#l00099">SCARD_TRANSMIT</a>, <a class="el" href="winscard__msg_8h_source.html#l00107">SCARD_TRANSMIT_EXTENDED</a>, <a class="el" href="winscard_8c_source.html#l01021">SCardBeginTransaction()</a>, <a class="el" href="winscard_8c_source.html#l01217">SCardCancelTransaction()</a>, <a class="el" href="winscard_8c_source.html#l00271">SCardConnect()</a>, <a class="el" href="winscard_8c_source.html#l01383">SCardControl()</a>, <a class="el" href="winscard_8c_source.html#l00838">SCardDisconnect()</a>, <a class="el" href="winscard_8c_source.html#l01066">SCardEndTransaction()</a>, <a class="el" href="winscard_8c_source.html#l00217">SCardEstablishContext()</a>, <a class="el" href="winscard_8c_source.html#l01442">SCardGetAttrib()</a>, <a class="el" href="winscard_8c_source.html#l00527">SCardReconnect()</a>, <a class="el" href="winscard_8c_source.html#l00247">SCardReleaseContext()</a>, <a class="el" href="winscard_8c_source.html#l01488">SCardSetAttrib()</a>, <a class="el" href="winscard_8c_source.html#l01253">SCardStatus()</a>, <a class="el" href="winscard_8c_source.html#l01534">SCardTransmit()</a>, <a class="el" href="winscard__msg_8c_source.html#l00268">SHMMessageReceive()</a>, and <a class="el" href="winscard__msg_8c_source.html#l00143">SHMMessageSend()</a>.</p>

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

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a4c383e648443031624ba0e312b75b30f"></a><!-- doxytag: member="winscard_svc.c::psContext" ref="a4c383e648443031624ba0e312b75b30f" args="[PCSCLITE_MAX_APPLICATIONS_CONTEXTS]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="struct__psContext.html">_psContext</a>  <a class="el" href="winscard__svc_8c.html#a4c383e648443031624ba0e312b75b30f">psContext</a>[PCSCLITE_MAX_APPLICATIONS_CONTEXTS]<code> [static]</code></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>Referenced by <a class="el" href="winscard__svc_8c_source.html#l00126">ContextThread()</a>, <a class="el" href="winscard__svc_8c_source.html#l00078">CreateContextThread()</a>, and <a class="el" href="winscard__svc_8c_source.html#l00256">MSGFunctionDemarshall()</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address>
</body>
</html>