[Pcsclite-muscle] Asynchronous PCSC API

Ludovic Rousseau ludovic.rousseau at gmail.com
Fri Jan 21 06:31:50 PST 2022

Le ven. 21 janv. 2022 à 15:19, Ievgenii Meshcheriakov
<ievgenii.meshcheriakov at qt.io> a écrit :
> Hi,

Hello Ievgenii,

> I'm trying to add PCSC support to Qt using pcsclite, but having problems
> doing this in a manner that is compatible with Qt's event system.
> There are some parts of API that are either blocking or require polling
> (SCardGetStatusChange(), SCardConnect() when another app is holding a
> transaction, probably others too). This necessitates using multiple threads to
> ensure that user's application is not blocked by the PCSCLite API calls (1 to
> detect slots, and probably 1 per slot). I know about SCardCancel(), but that
> requires coordination of shared access to context handles, and working around
> possible race conditions.
> I guess I'm stuck with this API for Windows, but I was wondering whether it is
> possible to use some better API on Linux. Is there an exisiting asyncronous
> API for pcscd or maybe there are plans to implement it? Maybe something
> similar to CryptoTokenKit, but perhaps with better control over lifetime of
> various objects?

The WinSCard API has been defined by the PC/SC workgroup
https://pcscworkgroup.com/ 20 years ago.
No asynchronous API is planned AFAIK.

I am afraid you will have to use threads or something similar in your case.
But maybe someone else has a better idea?


 Dr. Ludovic Rousseau

More information about the pcsclite-muscle mailing list