38#ifndef __readerfactory_h__
39#define __readerfactory_h__
59 RESPONSECODE (*pvfCreateChannel)(DWORD, DWORD);
60 RESPONSECODE (*pvfCloseChannel)(DWORD);
61 RESPONSECODE (*pvfGetCapabilities)(DWORD, DWORD, PDWORD, PUCHAR);
62 RESPONSECODE (*pvfSetCapabilities)(DWORD, DWORD, DWORD, PUCHAR);
63 RESPONSECODE (*pvfSetProtocolParameters)(DWORD, DWORD, UCHAR, UCHAR,
65 RESPONSECODE (*pvfPowerICC)(DWORD, DWORD, PUCHAR, PDWORD);
67 DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER);
68 RESPONSECODE (*pvfICCPresence)(DWORD);
71 RESPONSECODE (*pvfControl)(DWORD, PUCHAR, DWORD, PUCHAR, PDWORD);
79 RESPONSECODE (*pvfCreateChannel)(DWORD, DWORD);
80 RESPONSECODE (*pvfCloseChannel)(DWORD);
81 RESPONSECODE (*pvfGetCapabilities)(DWORD, DWORD, PDWORD, PUCHAR);
82 RESPONSECODE (*pvfSetCapabilities)(DWORD, DWORD, DWORD, PUCHAR);
83 RESPONSECODE (*pvfSetProtocolParameters)(DWORD, DWORD, UCHAR, UCHAR,
85 RESPONSECODE (*pvfPowerICC)(DWORD, DWORD, PUCHAR, PDWORD);
87 DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER);
88 RESPONSECODE (*pvfICCPresence)(DWORD);
91 RESPONSECODE (*pvfControl)(DWORD, DWORD, LPCVOID, DWORD, LPVOID,
93 RESPONSECODE (*pvfCreateChannelByName)(DWORD, LPSTR);
142 LONG _RefReader(READER_CONTEXT * sReader);
143 LONG _UnrefReader(READER_CONTEXT * sReader);
145#define REF_READER(reader) { LONG rv; Log2(PCSC_LOG_DEBUG, "RefReader() count was: %d", reader->reference); rv = _RefReader(reader); if (rv != SCARD_S_SUCCESS) return rv; }
146#define UNREF_READER(reader) {Log2(PCSC_LOG_DEBUG, "UnrefReader() count was: %d", reader->reference); _UnrefReader(reader);}
148 LONG RFAllocateReaderSpace(
unsigned int);
149 LONG RFAddReader(
const char *,
int,
const char *,
const char *);
150 LONG RFRemoveReader(
const char *,
int,
int);
151 LONG RFSetReaderName(READER_CONTEXT *,
const char *,
const char *,
int);
154 LONG RFCheckSharing(
SCARDHANDLE, READER_CONTEXT *);
156 LONG RFUnlockSharing(
SCARDHANDLE, READER_CONTEXT *);
157 LONG RFUnlockAllSharing(
SCARDHANDLE, READER_CONTEXT *);
158 LONG RFLoadReader(READER_CONTEXT *);
159 LONG RFBindFunctions(READER_CONTEXT *);
160 LONG RFUnBindFunctions(READER_CONTEXT *);
161 LONG RFUnloadReader(READER_CONTEXT *);
162 LONG RFInitializeReader(READER_CONTEXT *);
163 void RFUnInitializeReader(READER_CONTEXT *);
164 SCARDHANDLE RFCreateReaderHandle(READER_CONTEXT *);
165 LONG RFAddReaderHandle(READER_CONTEXT *,
SCARDHANDLE);
166 LONG RFRemoveReaderHandle(READER_CONTEXT *,
SCARDHANDLE);
167 void RFSetReaderEventState(READER_CONTEXT *, DWORD);
168 LONG RFCheckReaderEventState(READER_CONTEXT *,
SCARDHANDLE);
169 LONG RFClearReaderEventState(READER_CONTEXT *,
SCARDHANDLE);
170 LONG RFCheckReaderStatus(READER_CONTEXT *);
171 void RFCleanupReaders(
void);
172 void RFWaitForReaderInit(
void);
173 int RFStartSerialReaders(
const char *readerconf);
174 void RFReCheckReaderConf(
void);
176 void RFSetPowerState(READER_CONTEXT *,
int value);
178#define REMOVE_READER_NO_FLAG 0
179#define REMOVE_READER_FLAG_REMOVED 1
struct _SCARD_IO_HEADER SCARD_IO_HEADER
Use by SCardTransmit()
LONG SCARDHANDLE
hCard returned by SCardConnect()
int RFGetPowerState(READER_CONTEXT *)
Wait until all connected readers have a chance to power up a possibly inserted card.
SCARDHANDLE hCard
hCard for this connection
_Atomic DWORD dwEventStatus
Recent event that must be sent.
RESPONSECODE(* pthCardEvent)(DWORD, int)
Card Event sync.
pthread_mutex_t * mMutex
Mutex for this connection.
FCT_MAP_V3 psFunctions_v3
API V3.0.
pthread_mutex_t powerState_lock
powerState mutex
union ReaderContext::@113165206271175320223270267304143033123241331353 psFunctions
driver functions
pthread_t pthThread
Event polling thread.
_Atomic int32_t contexts
Number of open contexts.
int slot
Current Reader Slot.
int * pFeeds
Number of shared client to lib.
_Atomic SCARDHANDLE hLockId
Lock Id.
int * pMutex
Number of client to mutex.
int version
IFD Handler version number.
FCT_MAP_V2 psFunctions_v2
API V2.0.
pthread_mutex_t handlesList_lock
lock for the above list
_Atomic int LockCount
number of recursive locks
char * library
Library Path.
struct pubReaderStatesList * readerState
link to the reader state
_Atomic int reference
number of users of the structure
int powerState
auto power off state
char * device
Device Name.
_Atomic LPVOID vHandle
Dlopen handle.
char * pcFriendlyname
FRIENDLYNAME.
char * pcDevicename
DEVICENAME.
Define an exported public reader state structure so each application gets instant notification of cha...