<!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.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  <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&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="#define-members">Macros</a> | <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <div class="title">winscard.c File Reference</div> </div> </div><!--header--> <div class="contents"> <p>This handles smart card reader communications. <a href="#details">More...</a></p> <div class="textblock"><code>#include "config.h"</code><br /> <code>#include <stdlib.h></code><br /> <code>#include <sys/time.h></code><br /> <code>#include <string.h></code><br /> <code>#include <pthread.h></code><br /> <code>#include "<a class="el" href="pcscd_8h_source.html">pcscd.h</a>"</code><br /> <code>#include "<a class="el" href="winscard_8h_source.html">winscard.h</a>"</code><br /> <code>#include "<a class="el" href="ifdhandler_8h_source.html">ifdhandler.h</a>"</code><br /> <code>#include "<a class="el" href="debuglog_8h_source.html">debuglog.h</a>"</code><br /> <code>#include "<a class="el" href="readerfactory_8h_source.html">readerfactory.h</a>"</code><br /> <code>#include "<a class="el" href="prothandler_8h_source.html">prothandler.h</a>"</code><br /> <code>#include "<a class="el" href="ifdwrapper_8h_source.html">ifdwrapper.h</a>"</code><br /> <code>#include "<a class="el" href="atrhandler_8h_source.html">atrhandler.h</a>"</code><br /> <code>#include "<a class="el" href="sys__generic_8h_source.html">sys_generic.h</a>"</code><br /> <code>#include "<a class="el" href="eventhandler_8h_source.html">eventhandler.h</a>"</code><br /> <code>#include "utils.h"</code><br /> <code>#include "<a class="el" href="reader_8h_source.html">reader.h</a>"</code><br /> </div> <p><a href="winscard_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="define-members"></a> Macros</h2></td></tr> <tr class="memitem:aa402baa5f9ea438ec090db1e77961ecc"><td class="memItemLeft" align="right" valign="top"><a id="aa402baa5f9ea438ec090db1e77961ecc"></a> #define </td><td class="memItemRight" valign="bottom"><b>PROFILE_START</b></td></tr> <tr class="separator:aa402baa5f9ea438ec090db1e77961ecc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa30d8ea5262890f66e4d7a55044aabdd"><td class="memItemLeft" align="right" valign="top"><a id="aa30d8ea5262890f66e4d7a55044aabdd"></a> #define </td><td class="memItemRight" valign="bottom"><b>PROFILE_END</b></td></tr> <tr class="separator:aa30d8ea5262890f66e4d7a55044aabdd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac7c340dc56974012d266eff9be71e9ed"><td class="memItemLeft" align="right" valign="top"><a id="ac7c340dc56974012d266eff9be71e9ed"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="winscard_8c.html#ac7c340dc56974012d266eff9be71e9ed">SCARD_PROTOCOL_ANY_OLD</a>   0x1000</td></tr> <tr class="memdesc:ac7c340dc56974012d266eff9be71e9ed"><td class="mdescLeft"> </td><td class="mdescRight">used for backward compatibility <br /></td></tr> <tr class="separator:ac7c340dc56974012d266eff9be71e9ed"><td class="memSeparator" colspan="2"> </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:aa1b8970169fd4883a6dc4a8f43f19b67"><td class="memItemLeft" align="right" valign="top"><a id="aa1b8970169fd4883a6dc4a8f43f19b67"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardEstablishContext</b> (DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)</td></tr> <tr class="separator:aa1b8970169fd4883a6dc4a8f43f19b67"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6aabcba7744c5c9419fdd6404f73a934"><td class="memItemLeft" align="right" valign="top"><a id="a6aabcba7744c5c9419fdd6404f73a934"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardReleaseContext</b> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext)</td></tr> <tr class="separator:a6aabcba7744c5c9419fdd6404f73a934"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4e515829752e0a8dbc4d630696a8d6a5"><td class="memItemLeft" align="right" valign="top"><a id="a4e515829752e0a8dbc4d630696a8d6a5"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardConnect</b> (<a class="el" href="pcsclite_8h.html#a22530ffaff18b5d3e32260a5f1ce4abd">SCARDCONTEXT</a> hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)</td></tr> <tr class="separator:a4e515829752e0a8dbc4d630696a8d6a5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad5d4393ca8c470112ad9468c44ed8940"><td class="memItemLeft" align="right" valign="top"><a id="ad5d4393ca8c470112ad9468c44ed8940"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardReconnect</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwShareMode, DWORD dwPreferredProtocols, DWORD dwInitialization, LPDWORD pdwActiveProtocol)</td></tr> <tr class="separator:ad5d4393ca8c470112ad9468c44ed8940"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4be198045c73ec0deb79e66c0ca1738a"><td class="memItemLeft" align="right" valign="top"><a id="a4be198045c73ec0deb79e66c0ca1738a"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardDisconnect</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr> <tr class="separator:a4be198045c73ec0deb79e66c0ca1738a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:addb835dce01a0da1d6ca02d33ee7d861"><td class="memItemLeft" align="right" valign="top"><a id="addb835dce01a0da1d6ca02d33ee7d861"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardBeginTransaction</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard)</td></tr> <tr class="separator:addb835dce01a0da1d6ca02d33ee7d861"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae8742473b404363e5c587f570d7e2f3b"><td class="memItemLeft" align="right" valign="top"><a id="ae8742473b404363e5c587f570d7e2f3b"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardEndTransaction</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwDisposition)</td></tr> <tr class="separator:ae8742473b404363e5c587f570d7e2f3b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6aaaabe18ae2234b0146123f61fd952e"><td class="memItemLeft" align="right" valign="top"><a id="a6aaaabe18ae2234b0146123f61fd952e"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardStatus</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, LPSTR szReaderNames, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)</td></tr> <tr class="separator:a6aaaabe18ae2234b0146123f61fd952e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac3454d4657110fd7f753b2d3d8f4e32f"><td class="memItemLeft" align="right" valign="top"><a id="ac3454d4657110fd7f753b2d3d8f4e32f"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardControl</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned)</td></tr> <tr class="separator:ac3454d4657110fd7f753b2d3d8f4e32f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aacfec51917255b7a25b94c5104961602"><td class="memItemLeft" align="right" valign="top"><a id="aacfec51917255b7a25b94c5104961602"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardGetAttrib</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPBYTE pbAttr, LPDWORD pcbAttrLen)</td></tr> <tr class="separator:aacfec51917255b7a25b94c5104961602"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a060f0038a4ddfd5dd2b8fadf3c3a2e4f"><td class="memItemLeft" align="right" valign="top"><a id="a060f0038a4ddfd5dd2b8fadf3c3a2e4f"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardSetAttrib</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, DWORD dwAttrId, LPCBYTE pbAttr, DWORD cbAttrLen)</td></tr> <tr class="separator:a060f0038a4ddfd5dd2b8fadf3c3a2e4f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9a2d77242a271310269065e64633ab99"><td class="memItemLeft" align="right" valign="top"><a id="a9a2d77242a271310269065e64633ab99"></a> LONG </td><td class="memItemRight" valign="bottom"><b>SCardTransmit</b> (<a class="el" href="pcsclite_8h.html#af328aca3e11de737ecd771bcf1f75fb5">SCARDHANDLE</a> hCard, const <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a> *pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, <a class="el" href="structSCARD__IO__REQUEST.html">SCARD_IO_REQUEST</a> *pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)</td></tr> <tr class="separator:a9a2d77242a271310269065e64633ab99"><td class="memSeparator" colspan="2"> </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:a21709a45e82b32704abdc66474dded3c"><td class="memItemLeft" align="right" valign="top"><a id="a21709a45e82b32704abdc66474dded3c"></a> static pthread_mutex_t </td><td class="memItemRight" valign="bottom"><b>LockMutex</b> = PTHREAD_MUTEX_INITIALIZER</td></tr> <tr class="separator:a21709a45e82b32704abdc66474dded3c"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>This handles smart card reader communications. </p> <p>This is the heart of the smart card API.</p> <p>Here are the main server-side functions which execute the requests from the clients. </p> <p class="definition">Definition in file <a class="el" href="winscard_8c_source.html">winscard.c</a>.</p> </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  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>