This toolkit was written in ANSI C that can be used with most compilers and does NOT use complex and large data structures such as vectors, etc. The C API emulates the winscard API that is used on the Windows platform. It is contained in the library libpcsclite.so
that is linked to your application.
I would really like to hear from you. If you have any feedback either on this documentation or on the MUSCLE project please feel free to email me at: corcoran@musclecard.com.
Since all functions can produce a wide array of errors, please refer to pcsclite.h for a list of error returns.
For a human readable representation of an error the function pcsc_stringify_error() is declared in pcsclite.h. This function is not available on Microsoft(R) winscard API and is pcsc-lite specific.
pcscd
) and a client library (libpcsclite.so
) that communicate via IPC.
The file winscard_clnt.c in the client-side exposes the API for applications.
The file winscard.c has the server-side counterpart functions present in winscard_clnt.c.
The file winscard_msg.c is the communication interface between winscard_clnt.c and winscard.c.
The file pcscdaemon.c has the main server-side function, including a loop for accepting client requests.
The file winscard_svc.c has the functions called by pcscdaemon.c to serve clients requests.
When a function from winscard_clnt.c is called by a client application, it calls a function in winscard_msg.c to send the message to pcscdaemon.c. When pcscdaemon.c a client detects a request arrived, it calls winscard_svc.c which identifies what command the message contains and requests winscard.c to execute the command.
Meanwhile winscard_clnt.c waits for the response until a timeout occurs.