#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include "misc.h"
#include "pcscd.h"
#include "ifdhandler.h"
#include "debuglog.h"
#include "thread_generic.h"
#include "readerfactory.h"
#include "dyn_generic.h"
#include "sys_generic.h"
#include "eventhandler.h"
#include "ifdwrapper.h"
#include "hotplug.h"
#include "strlcpycat.h"
#include "configfile.h"
Go to the source code of this file.
Defines | |
#define | TRUE 1 |
#define | FALSE 0 |
#define | IDENTITY_SHIFT 16 |
#define | GET_ADDRESS_OPTIONALv1(field, function, code) |
#define | GET_ADDRESSv1(field, function) |
#define | GET_ADDRESS_OPTIONALv2(s, code) |
#define | GET_ADDRESSv2(s) |
#define | GET_ADDRESS_OPTIONALv3(s, code) |
#define | GET_ADDRESSv3(s) |
Functions | |
LONG | RFAllocateReaderSpace (void) |
LONG | RFAddReader (LPSTR lpcReader, DWORD dwPort, LPSTR lpcLibrary, LPSTR lpcDevice) |
LONG | RFRemoveReader (LPSTR lpcReader, DWORD dwPort) |
LONG | RFSetReaderName (PREADER_CONTEXT rContext, LPSTR readerName, LPSTR libraryName, DWORD dwPort, DWORD dwSlot) |
LONG | RFReaderInfo (LPSTR lpcReader, PREADER_CONTEXT *sReader) |
LONG | RFReaderInfoNamePort (DWORD dwPort, LPSTR lpcReader, PREADER_CONTEXT *sReader) |
LONG | RFReaderInfoById (DWORD dwIdentity, PREADER_CONTEXT *sReader) |
LONG | RFLoadReader (PREADER_CONTEXT rContext) |
LONG | RFBindFunctions (PREADER_CONTEXT rContext) |
LONG | RFUnBindFunctions (PREADER_CONTEXT rContext) |
LONG | RFUnloadReader (PREADER_CONTEXT rContext) |
LONG | RFCheckSharing (DWORD hCard) |
LONG | RFLockSharing (DWORD hCard) |
LONG | RFUnlockSharing (DWORD hCard) |
LONG | RFUnblockContext (SCARDCONTEXT hContext) |
LONG | RFUnblockReader (PREADER_CONTEXT rContext) |
LONG | RFInitializeReader (PREADER_CONTEXT rContext) |
LONG | RFUnInitializeReader (PREADER_CONTEXT rContext) |
SCARDHANDLE | RFCreateReaderHandle (PREADER_CONTEXT rContext) |
LONG | RFFindReaderHandle (SCARDHANDLE hCard) |
LONG | RFDestroyReaderHandle (SCARDHANDLE hCard) |
LONG | RFAddReaderHandle (PREADER_CONTEXT rContext, SCARDHANDLE hCard) |
LONG | RFRemoveReaderHandle (PREADER_CONTEXT rContext, SCARDHANDLE hCard) |
LONG | RFSetReaderEventState (PREADER_CONTEXT rContext, DWORD dwEvent) |
LONG | RFCheckReaderEventState (PREADER_CONTEXT rContext, SCARDHANDLE hCard) |
LONG | RFClearReaderEventState (PREADER_CONTEXT rContext, SCARDHANDLE hCard) |
LONG | RFCheckReaderStatus (PREADER_CONTEXT rContext) |
void | RFCleanupReaders (int shouldExit) |
int | RFStartSerialReaders (const char *readerconf) |
void | RFReCheckReaderConf (void) |
void | RFSuspendAllReaders (void) |
void | RFAwakeAllReaders (void) |
Variables | |
static PREADER_CONTEXT | sReadersContexts [PCSCLITE_MAX_READERS_CONTEXTS] |
static DWORD | dwNumReadersContexts = 0 |
static char * | ConfigFile = NULL |
static int | ConfigFileCRC = 0 |
static PCSCLITE_MUTEX | LockMutex = PTHREAD_MUTEX_INITIALIZER |
Definition in file readerfactory.c.
#define GET_ADDRESS_OPTIONALv1 | ( | field, | |||
function, | |||||
code | ) |
Value:
{ \ void *f1 = NULL; \ if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFD_" #function)) \ { \ code \ } \ rContext->psFunctions.psFunctions_v1.pvf ## field = f1; \ }
#define GET_ADDRESS_OPTIONALv2 | ( | s, | |||
code | ) |
Value:
{ \ void *f1 = NULL; \ if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s)) \ { \ code \ } \ rContext->psFunctions.psFunctions_v2.pvf ## s = f1; \ }
#define GET_ADDRESS_OPTIONALv3 | ( | s, | |||
code | ) |
Value:
{ \ void *f1 = NULL; \ if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s)) \ { \ code \ } \ rContext->psFunctions.psFunctions_v3.pvf ## s = f1; \ }
#define GET_ADDRESSv1 | ( | field, | |||
function | ) |
Value:
GET_ADDRESS_OPTIONALv1(field, function, \
Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #function ); \
exit(1); )
#define GET_ADDRESSv2 | ( | s | ) |
Value:
GET_ADDRESS_OPTIONALv2(s, \
Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #s ); \
exit(1); )
#define GET_ADDRESSv3 | ( | s | ) |
Value:
GET_ADDRESS_OPTIONALv3(s, \
Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #s ); \
exit(1); )