Sophie

Sophie

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

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_clnt.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.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_clnt.c File Reference</h1><code>#include &quot;config.h&quot;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;fcntl.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;sys/un.h&gt;</code><br/>
<code>#include &lt;errno.h&gt;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
<code>#include &lt;sys/time.h&gt;</code><br/>
<code>#include &quot;misc.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="pcscd_8h_source.html">pcscd.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="winscard_8h_source.html">winscard.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="debug_8h_source.html">debug.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="strlcpycat_8h_source.html">strlcpycat.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="readerfactory_8h_source.html">readerfactory.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="eventhandler_8h_source.html">eventhandler.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="sys__generic_8h_source.html">sys_generic.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="winscard__msg_8h_source.html">winscard_msg.h</a>&quot;</code><br/>
<code>#include &quot;utils.h&quot;</code><br/>
<div class="dynheader">
Include dependency graph for winscard_clnt.c:</div>
<div class="dynsection">
</div>

<p><a href="winscard__clnt_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__psChannelMap.html">_psChannelMap</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an Application Context Channel.  <a href="struct__psChannelMap.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__psContextMap.html">_psContextMap</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents the an Application Context on the Client side.  <a href="struct__psContextMap.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7c340dc56974012d266eff9be71e9ed"></a><!-- doxytag: member="winscard_clnt.c::SCARD_PROTOCOL_ANY_OLD" ref="ac7c340dc56974012d266eff9be71e9ed" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ac7c340dc56974012d266eff9be71e9ed">SCARD_PROTOCOL_ANY_OLD</a>&nbsp;&nbsp;&nbsp;0x1000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">used for backward compatibility <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa402baa5f9ea438ec090db1e77961ecc"></a><!-- doxytag: member="winscard_clnt.c::PROFILE_START" ref="aa402baa5f9ea438ec090db1e77961ecc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PROFILE_START</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62b2b1636665925df13b65761b9015db"></a><!-- doxytag: member="winscard_clnt.c::PROFILE_END" ref="a62b2b1636665925df13b65761b9015db" args="(rv)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PROFILE_END</b>(rv)</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cc1f8e21119487ef295322726d50dbe"></a><!-- doxytag: member="winscard_clnt.c::CHANNEL_MAP" ref="a1cc1f8e21119487ef295322726d50dbe" args="" -->
typedef struct <a class="el" href="struct__psChannelMap.html">_psChannelMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>CHANNEL_MAP</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e345402cecbf6618ac4ff318f3ff536"></a><!-- doxytag: member="winscard_clnt.c::PCHANNEL_MAP" ref="a8e345402cecbf6618ac4ff318f3ff536" args="" -->
typedef struct <a class="el" href="struct__psChannelMap.html">_psChannelMap</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>PCHANNEL_MAP</b></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a912fef2d428ea8a0a80fcfe5d01423c4"></a><!-- doxytag: member="winscard_clnt.c::time_sub" ref="a912fef2d428ea8a0a80fcfe5d01423c4" args="(struct timeval *a, struct timeval *b)" -->
static long int&nbsp;</td><td class="memItemRight" valign="bottom"><b>time_sub</b> (struct timeval *a, struct timeval *b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ac75190d70d571bca9915bef60491534a">SCardAddContext</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, DWORD dwClientID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions for managing instances of <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context for a client.">SCardEstablishContext()</a> These functions keep track of Context handles and associate the blocking variable contextBlockStatus to an hContext.  <a href="#ac75190d70d571bca9915bef60491534a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a7f66332c12595b27726461b242b14949">SCardGetContextIndice</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context.  <a href="#a7f66332c12595b27726461b242b14949"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a64c964f90285e8409a0d41d43bb05348">SCardGetContextIndiceTH</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context.  <a href="#a64c964f90285e8409a0d41d43bb05348"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a7e3dc878020f1e5ccdae1a6914abd3b0">SCardRemoveContext</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes an Application Context from a control vector.  <a href="#a7e3dc878020f1e5ccdae1a6914abd3b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf0fea12f220dc8044799cbf5516fafe"></a><!-- doxytag: member="winscard_clnt.c::SCardCleanContext" ref="adf0fea12f220dc8044799cbf5516fafe" args="(LONG indice)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardCleanContext</b> (LONG indice)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa183d803d0ebd72e29832e1ed6d2779"></a><!-- doxytag: member="winscard_clnt.c::SCardAddHandle" ref="aaa183d803d0ebd72e29832e1ed6d2779" args="(SCARDHANDLE, DWORD, LPCSTR)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardAddHandle</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, DWORD, LPCSTR)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62ae480deb8c34e18191616d76686579"></a><!-- doxytag: member="winscard_clnt.c::SCardGetIndicesFromHandle" ref="a62ae480deb8c34e18191616d76686579" args="(SCARDHANDLE, PDWORD, PDWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardGetIndicesFromHandle</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, PDWORD, PDWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38452c75c902e614aa4bbbc5025e05b8"></a><!-- doxytag: member="winscard_clnt.c::SCardGetIndicesFromHandleTH" ref="a38452c75c902e614aa4bbbc5025e05b8" args="(SCARDHANDLE, PDWORD, PDWORD)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardGetIndicesFromHandleTH</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>, PDWORD, PDWORD)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad012ab6d25911259c82e06cb2fc1d971"></a><!-- doxytag: member="winscard_clnt.c::SCardRemoveHandle" ref="ad012ab6d25911259c82e06cb2fc1d971" args="(SCARDHANDLE)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardRemoveHandle</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1debc96721101456a1c1cd8fbbdcfe2"></a><!-- doxytag: member="winscard_clnt.c::SCardGetSetAttrib" ref="aa1debc96721101456a1c1cd8fbbdcfe2" args="(SCARDHANDLE hCard, int command, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)" -->
static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><b>SCardGetSetAttrib</b> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, int command, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void DESTRUCTOR&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a37765ea543e030fb158a9d6b8a7762f8">SCardUnload</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free resources allocated by the library.  <a href="#a37765ea543e030fb158a9d6b8a7762f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1f7e1b05b30f1e5a5cd62b2f925222fe">SCardLockThread</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function locks a mutex so another thread must wait to use this function.  <a href="#a1f7e1b05b30f1e5a5cd62b2f925222fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a5dc8cab71db796c9e91329c22f4ebfa1">SCardUnlockThread</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function unlocks a mutex so another thread may use the client.  <a href="#a5dc8cab71db796c9e91329c22f4ebfa1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#aa86f1a8ccfbdbe7c64eea5219c7639e6">SCardEstablishContextTH</a> (DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2, LPSCARDCONTEXT phContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a communication context to the PC/SC Resource Manager.  <a href="#aa86f1a8ccfbdbe7c64eea5219c7639e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67">SCardEstablishContext</a> (DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates an Application Context to the PC/SC Resource Manager.  <a href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga6aabcba7744c5c9419fdd6404f73a934">SCardReleaseContext</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function destroys a communication context to the PC/SC Resource Manager.  <a href="group__API.html#ga6aabcba7744c5c9419fdd6404f73a934"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga812e35ead06d4690fa96aecf371c6255">SCardSetTimeout</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, DWORD dwTimeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The function does not do anything except returning <a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>.  <a href="group__API.html#ga812e35ead06d4690fa96aecf371c6255"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5">SCardConnect</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function establishes a connection to the reader specified in <code>szReader</code>.  <a href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gad5d4393ca8c470112ad9468c44ed8940">SCardReconnect</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwShareMode, DWORD dwPreferredProtocols, DWORD dwInitialization, LPDWORD pdwActiveProtocol)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function reestablishes a connection to a reader that was previously connected to using <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="This function establishes a connection to the reader specified in szReader.">SCardConnect()</a>.  <a href="group__API.html#gad5d4393ca8c470112ad9468c44ed8940"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga4be198045c73ec0deb79e66c0ca1738a">SCardDisconnect</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function terminates a connection made through <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="This function establishes a connection to the reader specified in szReader.">SCardConnect()</a>.  <a href="group__API.html#ga4be198045c73ec0deb79e66c0ca1738a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861">SCardBeginTransaction</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function establishes a temporary exclusive access mode for doing a serie of commands in a transaction.  <a href="group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gae8742473b404363e5c587f570d7e2f3b">SCardEndTransaction</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function ends a previously begun transaction.  <a href="group__API.html#gae8742473b404363e5c587f570d7e2f3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga294d4c60b3631b9584a8c854ee8c3b1b">SCardCancelTransaction</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga18f33eebb45d9e0d2a091ca7a0511d26">SCardStatus</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, LPSTR mszReaderName, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function returns the current status of the reader connected to by <code>hCard</code>.  <a href="group__API.html#ga18f33eebb45d9e0d2a091ca7a0511d26"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89dbb66cfac04e3a4b463e360ca3bb1f"></a><!-- doxytag: member="winscard_clnt.c::WaitForPcscdEvent" ref="a89dbb66cfac04e3a4b463e360ca3bb1f" args="(SCARDCONTEXT hContext, long dwTime)" -->
static long&nbsp;</td><td class="memItemRight" valign="bottom"><b>WaitForPcscdEvent</b> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, long dwTime)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gad1db67ba2b7d143498257294b873c049">SCardGetStatusChange</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, DWORD dwTimeout, <a class="el" href="structSCARD__READERSTATE__A.html">LPSCARD_READERSTATE_A</a> rgReaderStates, DWORD cReaders)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function receives a structure or list of structures containing reader names.  <a href="group__API.html#gad1db67ba2b7d143498257294b873c049"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f">SCardControl</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function sends a command directly to the IFD Handler (reader driver) to be processed by the reader.  <a href="group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaacfec51917255b7a25b94c5104961602">SCardGetAttrib</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function get an attribute from the IFD Handler (reader driver).  <a href="group__API.html#gaacfec51917255b7a25b94c5104961602"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f">SCardSetAttrib</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPCBYTE pbAttr, DWORD cbAttrLen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function set an attribute of the IFD Handler.  <a href="group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gac60e9e6c93b04e61594a3a8f69ee1898">SCardTransmit</a> (<a class="el" href="pcsclite_8h.html#a0ef8f5baf9ee6c07dbdc7644c641d0a9">SCARDHANDLE</a> hCard, <a class="el" href="structSCARD__IO__REQUEST.html">LPCSCARD_IO_REQUEST</a> pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, <a class="el" href="structSCARD__IO__REQUEST.html">LPSCARD_IO_REQUEST</a> pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function sends an APDU to the smart card contained in the reader connected to by <a class="el" href="group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5" title="This function establishes a connection to the reader specified in szReader.">SCardConnect()</a>.  <a href="group__API.html#gac60e9e6c93b04e61594a3a8f69ee1898"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga93b07815789b3cf2629d439ecf20f0d9">SCardListReaders</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function returns a list of currently available readers on the system.  <a href="group__API.html#ga93b07815789b3cf2629d439ecf20f0d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga0522241e3180cb05dfd166e28930e961">SCardFreeMemory</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, LPCVOID pvMem)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases memory that has been returned from the resource manager using the <a class="el" href="pcsclite_8h.html#a67db0943aeb13f9f468eaae39b5ff1b0">SCARD_AUTOALLOCATE</a> length designator.  <a href="group__API.html#ga0522241e3180cb05dfd166e28930e961"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga9d970d086d5218e080d0079d63f9d496">SCardListReaderGroups</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext, LPSTR mszGroups, LPDWORD pcchGroups)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function returns a list of currently available reader groups on the system.  <a href="group__API.html#ga9d970d086d5218e080d0079d63f9d496"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6">SCardCancel</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function cancels all pending blocking requests on the <a class="el" href="group__API.html#gad1db67ba2b7d143498257294b873c049" title="This function receives a structure or list of structures containing reader names...">SCardGetStatusChange()</a> function.  <a href="group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__API.html#ga722eb66bcc44d391f700ff9065cc080b">SCardIsValidContext</a> (<a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> hContext)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a <a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a> is valid.  <a href="group__API.html#ga722eb66bcc44d391f700ff9065cc080b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">LONG&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#aaa02e1f70d68a502cd92ed066c44542f">SCardCheckDaemonAvailability</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks if the server is running.  <a href="#aaa02e1f70d68a502cd92ed066c44542f"></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__psContextMap.html">_psContextMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a> [PCSCLITE_MAX_APPLICATION_CONTEXTS]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents the an Application Context on the Client side.  <a href="#ae302184e5b19da694c09713cb5bcbb8a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a5339bb356528ce056a2b3bfcc49444"></a><!-- doxytag: member="winscard_clnt.c::isExecuted" ref="a1a5339bb356528ce056a2b3bfcc49444" args="" -->
static short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1a5339bb356528ce056a2b3bfcc49444">isExecuted</a> = 0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Make sure the initialization code is executed only once. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c905a378deb91c13dbbb15b31060f37"></a><!-- doxytag: member="winscard_clnt.c::daemon_ctime" ref="a3c905a378deb91c13dbbb15b31060f37" args="" -->
static time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a3c905a378deb91c13dbbb15b31060f37">daemon_ctime</a> = 0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creation time of pcscd PCSCLITE_PUBSHM_FILE file <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a892ad3506e48d21d8b670c3376c182a3"></a><!-- doxytag: member="winscard_clnt.c::daemon_pid" ref="a892ad3506e48d21d8b670c3376c182a3" args="" -->
static pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>daemon_pid</b> = 0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a87f9cbda197595c49572e21179cbb96b">client_pid</a> = 0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PID of the client application.  <a href="#a87f9cbda197595c49572e21179cbb96b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a0c73c984118f8eaa5115c0a89803b825">mapAddr</a> = 0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Memory mapped address used to read status information about the readers.  <a href="#a0c73c984118f8eaa5115c0a89803b825"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static PCSCLITE_MUTEX&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a633fd84349357939b82a0946626a4c73">clientMutex</a> = PTHREAD_MUTEX_INITIALIZER</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ensure that some functions be accessed in thread-safe mode.  <a href="#a633fd84349357939b82a0946626a4c73"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structpubReaderStatesList.html">PREADER_STATE</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1db679cbe58b14a3d3ecb915938addba">readerStates</a> [PCSCLITE_MAX_READERS_CONTEXTS]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointers to a memory mapped area used to read status information about the readers.  <a href="#a1db679cbe58b14a3d3ecb915938addba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add194ea1e5a4e8e92533a807b1b2d1ff"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardT0Pci" ref="add194ea1e5a4e8e92533a807b1b2d1ff" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#add194ea1e5a4e8e92533a807b1b2d1ff">g_rgSCardT0Pci</a> = { SCARD_PROTOCOL_T0, 8 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Protocol Control Information for T=0. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ea1ee5a3fa301c87f05a18e99fcd871"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardT1Pci" ref="a1ea1ee5a3fa301c87f05a18e99fcd871" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#a1ea1ee5a3fa301c87f05a18e99fcd871">g_rgSCardT1Pci</a> = { SCARD_PROTOCOL_T1, 8 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Protocol Control Information for T=1. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acadf43275ed54ac6ab7f380ade2eaf9d"></a><!-- doxytag: member="winscard_clnt.c::g_rgSCardRawPci" ref="acadf43275ed54ac6ab7f380ade2eaf9d" args="" -->
PCSC_API <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="winscard__clnt_8c.html#acadf43275ed54ac6ab7f380ade2eaf9d">g_rgSCardRawPci</a> = { SCARD_PROTOCOL_RAW, 8 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Protocol Control Information for raw access. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>

<p>Definition in file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</a>.</p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ac75190d70d571bca9915bef60491534a"></a><!-- doxytag: member="winscard_clnt.c::SCardAddContext" ref="ac75190d70d571bca9915bef60491534a" args="(SCARDCONTEXT hContext, DWORD dwClientID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardAddContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>&nbsp;</td>
          <td class="paramname"> <em>hContext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DWORD&nbsp;</td>
          <td class="paramname"> <em>dwClientID</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>Functions for managing instances of <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context for a client.">SCardEstablishContext()</a> These functions keep track of Context handles and associate the blocking variable contextBlockStatus to an hContext. </p>
<p>Adds an Application Context to the vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>hContext</em>&nbsp;</td><td>Application Context ID. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dwClientID</em>&nbsp;</td><td>Client connection ID.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error code. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SCARD_S_SUCCESS</em>&nbsp;</td><td>Success (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_NO_MEMORY</em>&nbsp;</td><td>There is no free slot to store <code>hContext</code> (<a class="el" href="pcsclite_8h.html#a81694393a1494d5091145734a2f0b36c">SCARD_E_NO_MEMORY</a>) </td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="pcscd_8h_source.html#l00024">BLOCK_STATUS_RESUME</a>, <a class="el" href="winscard__clnt_8c_source.html#l00177">_psContextMap::dwClientID</a>, <a class="el" href="winscard__clnt_8c_source.html#l00178">_psContextMap::hContext</a>, <a class="el" href="winscard__clnt_8c_source.html#l00180">_psContextMap::mMutex</a>, <a class="el" href="pcscd_8h_source.html#l00052">PCSCLITE_MAX_APPLICATION_CONTEXTS</a>, <a class="el" href="winscard__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a>, <a class="el" href="pcsclite_8h_source.html#l00076">SCARD_E_NO_MEMORY</a>, and <a class="el" href="pcsclite_8h_source.html#l00070">SCARD_S_SUCCESS</a>.</p>

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

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

<p>Checks if the server is running. </p>
<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>Server is running (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_NO_SERVICE</em>&nbsp;</td><td>Server is not running (<a class="el" href="pcsclite_8h.html#ad4729ab109ff490285d2ad881c04bee8">SCARD_E_NO_SERVICE</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_INVALID_HANDLE</em>&nbsp;</td><td>Server was restarted or after fork() (<a class="el" href="pcsclite_8h.html#a05bdea2f2341e78d920885d1cc357676">SCARD_E_INVALID_HANDLE</a>) </td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="winscard__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a>, <a class="el" href="pcsclite_8h_source.html#l00073">SCARD_E_INVALID_HANDLE</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__clnt_8c_source.html#l00254">SCardLockThread()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03864">SCardUnload()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00264">SCardUnlockThread()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l01133">SCardBeginTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01365">SCardCancelTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00734">SCardConnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l02365">SCardControl()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01030">SCardDisconnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01266">SCardEndTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00305">SCardEstablishContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03321">SCardFreeMemory()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01872">SCardGetStatusChange()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03543">SCardIsValidContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardListReaderGroups()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03202">SCardListReaders()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00906">SCardReconnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01532">SCardStatus()</a>, <a class="el" href="winscard__clnt_8c_source.html#l02915">SCardTransmit()</a>, and <a class="el" href="winscard__msg_8c_source.html#l00268">SHMMessageReceive()</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="aa86f1a8ccfbdbe7c64eea5219c7639e6"></a><!-- doxytag: member="winscard_clnt.c::SCardEstablishContextTH" ref="aa86f1a8ccfbdbe7c64eea5219c7639e6" args="(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2, LPSCARDCONTEXT phContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardEstablishContextTH </td>
          <td>(</td>
          <td class="paramtype">DWORD&nbsp;</td>
          <td class="paramname"> <em>dwScope</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPCVOID&nbsp;</td>
          <td class="paramname"> <em>pvReserved1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPCVOID&nbsp;</td>
          <td class="paramname"> <em>pvReserved2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPSCARDCONTEXT&nbsp;</td>
          <td class="paramname"> <em>phContext</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>Creates a communication context to the PC/SC Resource Manager. </p>
<p>This function should not be called directly. Instead, the thread-safe function <a class="el" href="group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67" title="Creates an Application Context for a client.">SCardEstablishContext()</a> should be called.</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>dwScope</em>&nbsp;</td><td>Scope of the establishment. This can either be a local or remote connection.</p>
<ul>
<li><a class="el" href="pcsclite_8h.html#a4476ec1c5ae384961f0f059fa28fb1dc">SCARD_SCOPE_USER</a> - Not used.</li>
<li><a class="el" href="pcsclite_8h.html#a82f7392ae7f5e6702940d7fc64854dc2">SCARD_SCOPE_TERMINAL</a> - Not used.</li>
<li><a class="el" href="pcscd_8h.html#a44e87b3c0cca8a029dd654f0432f34e8">SCARD_SCOPE_GLOBAL</a> - Not used.</li>
<li><a class="el" href="pcsclite_8h.html#a01ffeed2d7fac470371c79fa86b1e309">SCARD_SCOPE_SYSTEM</a> - Services on the local machine. </li>
</ul>
</td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pvReserved1</em>&nbsp;</td><td>Reserved for future use. Can be used for remote connection. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pvReserved2</em>&nbsp;</td><td>Reserved for future use. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>phContext</em>&nbsp;</td><td>Returned reference to this connection.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Connection status. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SCARD_S_SUCCESS</em>&nbsp;</td><td>Successful (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_INVALID_PARAMETER</em>&nbsp;</td><td><code>phContext</code> is null. (<a class="el" href="pcsclite_8h.html#a47a6da10ec4ea2cbebfcc4b2a93d786f">SCARD_E_INVALID_PARAMETER</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_INVALID_VALUE</em>&nbsp;</td><td>Invalid scope type passed (<a class="el" href="pcsclite_8h.html#a9ece9fd9e68e4f802e16e951f8f2a642">SCARD_E_INVALID_VALUE</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_NO_MEMORY</em>&nbsp;</td><td>There is no free slot to store <code>hContext</code> (<a class="el" href="pcsclite_8h.html#a81694393a1494d5091145734a2f0b36c">SCARD_E_NO_MEMORY</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_NO_SERVICE</em>&nbsp;</td><td>The server is not runing (<a class="el" href="pcsclite_8h.html#ad4729ab109ff490285d2ad881c04bee8">SCARD_E_NO_SERVICE</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_F_COMM_ERROR</em>&nbsp;</td><td>An internal communications error has been detected (<a class="el" href="pcsclite_8h.html#a93d3cf468d69423eab1d478a7a870408">SCARD_F_COMM_ERROR</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_F_INTERNAL_ERROR</em>&nbsp;</td><td>An internal consistency check failed (<a class="el" href="pcsclite_8h.html#a081a564acaf166f74592906f7dff2d86">SCARD_F_INTERNAL_ERROR</a>) </td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="pcscd_8h_source.html#l00024">BLOCK_STATUS_RESUME</a>, <a class="el" href="winscard__msg_8h_source.html#l00083">CMD_VERSION</a>, <a class="el" href="winscard__msg_8h_source.html#l00061">rxSharedSegment::date</a>, <a class="el" href="winscard__clnt_8c_source.html#l00177">_psContextMap::dwClientID</a>, <a class="el" href="winscard__clnt_8c_source.html#l00178">_psContextMap::hContext</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__clnt_8c_source.html#l00180">_psContextMap::mMutex</a>, <a class="el" href="pcscd_8h_source.html#l00042">PCSCLITE_CLIENT_ATTEMPTS</a>, <a class="el" href="pcscd_8h_source.html#l00059">PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS</a>, <a class="el" href="pcscd_8h_source.html#l00052">PCSCLITE_MAX_APPLICATION_CONTEXTS</a>, <a class="el" href="pcsclite_8h_source.html#l00188">PCSCLITE_MAX_READERS_CONTEXTS</a>, <a class="el" href="pcscd_8h_source.html#l00043">PCSCLITE_MCLIENT_ATTEMPTS</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__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a>, <a class="el" href="pcsclite_8h_source.html#l00074">SCARD_E_INVALID_PARAMETER</a>, <a class="el" href="pcsclite_8h_source.html#l00076">SCARD_E_NO_MEMORY</a>, <a class="el" href="pcsclite_8h_source.html#l00099">SCARD_E_NO_SERVICE</a>, <a class="el" href="winscard__msg_8h_source.html#l00091">SCARD_ESTABLISH_CONTEXT</a>, <a class="el" href="pcsclite_8h_source.html#l00089">SCARD_F_COMM_ERROR</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>, <a class="el" href="winscard__clnt_8c_source.html#l03585">SCardAddContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03640">SCardGetContextIndiceTH()</a>, <a class="el" href="winscard__msg_8c_source.html#l00057">SHMClientRead()</a>, <a class="el" href="winscard__msg_8c_source.html#l00075">SHMClientSetupSession()</a>, <a class="el" href="winscard__msg_8c_source.html#l00268">SHMMessageReceive()</a>, <a class="el" href="winscard__msg_8c_source.html#l00143">SHMMessageSend()</a>, <a class="el" href="sys__unix_8c_source.html#l00143">SYS_CloseFile()</a>, <a class="el" href="sys__unix_8c_source.html#l00207">SYS_GetPageSize()</a>, <a class="el" href="sys__unix_8c_source.html#l00043">SYS_Initialize()</a>, <a class="el" href="sys__unix_8c_source.html#l00127">SYS_OpenFile()</a>, <a class="el" href="sys__unix_8c_source.html#l00255">SYS_PublicMemoryMap()</a>, <a class="el" href="winscard__msg_8h_source.html#l00058">rxSharedSegment::user_id</a>, and <a class="el" href="winscard__msg_8c_source.html#l00412">WrapSHMWrite()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00305">SCardEstablishContext()</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="a7f66332c12595b27726461b242b14949"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContextIndice" ref="a7f66332c12595b27726461b242b14949" args="(SCARDCONTEXT hContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardGetContextIndice </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>&nbsp;</td>
          <td class="paramname"> <em>hContext</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context. </p>
<p>This function is a thread-safe wrapper to the function <a class="el" href="winscard__clnt_8c.html#a64c964f90285e8409a0d41d43bb05348" title="Get the index from the Application Context vector _psContextMap for the passed context...">SCardGetContextIndiceTH()</a>.</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>hContext</em>&nbsp;</td><td>Application Context whose index will be find.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Index corresponding to the Application Context or -1 if it is not found. </dd></dl>

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

<p>References <a class="el" href="winscard__clnt_8c_source.html#l03640">SCardGetContextIndiceTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00254">SCardLockThread()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00264">SCardUnlockThread()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03495">SCardCancel()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00734">SCardConnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03321">SCardFreeMemory()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01872">SCardGetStatusChange()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03543">SCardIsValidContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardListReaderGroups()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03202">SCardListReaders()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</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="a64c964f90285e8409a0d41d43bb05348"></a><!-- doxytag: member="winscard_clnt.c::SCardGetContextIndiceTH" ref="a64c964f90285e8409a0d41d43bb05348" args="(SCARDCONTEXT hContext)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardGetContextIndiceTH </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pcsclite_8h.html#a3524142a16d7185916422baf6bb7883f">SCARDCONTEXT</a>&nbsp;</td>
          <td class="paramname"> <em>hContext</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the index from the Application Context vector <code><a class="el" href="struct__psContextMap.html" title="Represents the an Application Context on the Client side.">_psContextMap</a></code> for the passed context. </p>
<p>This functions is not thread-safe and should not be called. Instead, call the function <a class="el" href="winscard__clnt_8c.html#a7f66332c12595b27726461b242b14949" title="Get the index from the Application Context vector _psContextMap for the passed context...">SCardGetContextIndice()</a>.</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>hContext</em>&nbsp;</td><td>Application Context whose index will be find.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Index corresponding to the Application Context or -1 if it is not found. </dd></dl>

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

<p>References <a class="el" href="pcscd_8h_source.html#l00052">PCSCLITE_MAX_APPLICATION_CONTEXTS</a>, and <a class="el" href="winscard__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00357">SCardEstablishContextTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03617">SCardGetContextIndice()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l03665">SCardRemoveContext()</a>.</p>

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

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

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

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03790">SCardCheckDaemonAvailability()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00305">SCardEstablishContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03617">SCardGetContextIndice()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</a>.</p>

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

<p>Removes an Application Context from a control vector. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>hContext</em>&nbsp;</td><td>Application Context to be removed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error code. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SCARD_S_SUCCESS</em>&nbsp;</td><td>Success (<a class="el" href="pcsclite_8h.html#a4a3c56f69570971d366642a563b34a75">SCARD_S_SUCCESS</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SCARD_E_INVALID_HANDLE</em>&nbsp;</td><td>The context <code>hContext</code> was not found (<a class="el" href="pcsclite_8h.html#a05bdea2f2341e78d920885d1cc357676">SCARD_E_INVALID_HANDLE</a>) </td></tr>
  </table>
  </dd>
</dl>

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

<p>References <a class="el" href="pcsclite_8h_source.html#l00073">SCARD_E_INVALID_HANDLE</a>, and <a class="el" href="winscard__clnt_8c_source.html#l03640">SCardGetContextIndiceTH()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</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="a37765ea543e030fb158a9d6b8a7762f8"></a><!-- doxytag: member="winscard_clnt.c::SCardUnload" ref="a37765ea543e030fb158a9d6b8a7762f8" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DESTRUCTOR SCardUnload </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free resources allocated by the library. </p>
<p>You _shall_ call this function if you use dlopen/dlclose to load/unload the library. Otherwise you will exhaust the ressources available. </p>

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

<p>References <a class="el" href="sys__unix_8c_source.html#l00143">SYS_CloseFile()</a>, and <a class="el" href="sys__unix_8c_source.html#l00278">SYS_PublicMemoryUnmap()</a>.</p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03790">SCardCheckDaemonAvailability()</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="a5dc8cab71db796c9e91329c22f4ebfa1"></a><!-- doxytag: member="winscard_clnt.c::SCardUnlockThread" ref="a5dc8cab71db796c9e91329c22f4ebfa1" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static LONG SCardUnlockThread </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function unlocks a mutex so another thread may use the client. </p>
<p>Wrapper to the function SYS_MutexUnLock(). </p>

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

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03790">SCardCheckDaemonAvailability()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00305">SCardEstablishContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03617">SCardGetContextIndice()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</a>.</p>

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

<p>PID of the client application. </p>
<p>Used to detect fork() and disable handles in the child process </p>

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

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

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

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

</div>
</div>
<a class="anchor" id="a0c73c984118f8eaa5115c0a89803b825"></a><!-- doxytag: member="winscard_clnt.c::mapAddr" ref="a0c73c984118f8eaa5115c0a89803b825" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="winscard__clnt_8c.html#a0c73c984118f8eaa5115c0a89803b825">mapAddr</a> = 0<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Memory mapped address used to read status information about the readers. </p>
<p>Each element in the vector <a class="el" href="winscard__clnt_8c.html#a1db679cbe58b14a3d3ecb915938addba">readerStates</a> makes references to a part of the memory mapped. </p>

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

</div>
</div>
<a class="anchor" id="ae302184e5b19da694c09713cb5bcbb8a"></a><!-- doxytag: member="winscard_clnt.c::psContextMap" ref="ae302184e5b19da694c09713cb5bcbb8a" args="[PCSCLITE_MAX_APPLICATION_CONTEXTS]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="struct__psContextMap.html">_psContextMap</a>  <a class="el" href="winscard__clnt_8c.html#ae302184e5b19da694c09713cb5bcbb8a">psContextMap</a>[PCSCLITE_MAX_APPLICATION_CONTEXTS]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Represents the an Application Context on the Client side. </p>
<p>An Application Context contains Channels (<code><a class="el" href="struct__psChannelMap.html" title="Represents an Application Context Channel.">_psChannelMap</a></code>). </p>

<p>Referenced by <a class="el" href="winscard__clnt_8c_source.html#l03585">SCardAddContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01133">SCardBeginTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03495">SCardCancel()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01365">SCardCancelTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03790">SCardCheckDaemonAvailability()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00734">SCardConnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l02365">SCardControl()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01030">SCardDisconnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01266">SCardEndTransaction()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00357">SCardEstablishContextTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03640">SCardGetContextIndiceTH()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01872">SCardGetStatusChange()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03395">SCardListReaderGroups()</a>, <a class="el" href="winscard__clnt_8c_source.html#l03202">SCardListReaders()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00906">SCardReconnect()</a>, <a class="el" href="winscard__clnt_8c_source.html#l00576">SCardReleaseContext()</a>, <a class="el" href="winscard__clnt_8c_source.html#l01532">SCardStatus()</a>, and <a class="el" href="winscard__clnt_8c_source.html#l02915">SCardTransmit()</a>.</p>

</div>
</div>
<a class="anchor" id="a1db679cbe58b14a3d3ecb915938addba"></a><!-- doxytag: member="winscard_clnt.c::readerStates" ref="a1db679cbe58b14a3d3ecb915938addba" args="[PCSCLITE_MAX_READERS_CONTEXTS]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structpubReaderStatesList.html">PREADER_STATE</a> <a class="el" href="winscard__clnt_8c.html#a1db679cbe58b14a3d3ecb915938addba">readerStates</a>[PCSCLITE_MAX_READERS_CONTEXTS]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Pointers to a memory mapped area used to read status information about the readers. </p>
<p>Each element in the vector <a class="el" href="winscard__clnt_8c.html#a1db679cbe58b14a3d3ecb915938addba">readerStates</a> makes references to a part of the memory mapped <a class="el" href="winscard__clnt_8c.html#a0c73c984118f8eaa5115c0a89803b825">mapAddr</a>. </p>

<p>Definition at line <a class="el" href="winscard__clnt_8c_source.html#l00220">220</a> of file <a class="el" href="winscard__clnt_8c_source.html">winscard_clnt.c</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>