François, Please try the cardmod code that is now in SVN. It now works with login to AD, can detect changes of a card in the reader as well as the other changes as outlined in the commit comments.
If the CARDMOD_LOW_LEVEL_DEBUG is defined, see line #97 it will try and write out the the file "c:\tmp\cardmod.log.txt" even before sc_create_context has been called. This has shown a lot more detail about what is really going on within the code, including when DllMain is called, and by what modules. The file must be modifiable be everyone. I built this using the mingw build package in the SVN on Ubuntu, and had to copy SCardErr.h, WinSCard.h, WinSmCrd.h, bcrypt.h and cardmod.h files from the Microsoft SDK and CNG SDK, with lowercase names to the build\include. I have not tried building using Visual studio. There are still a lot of changes that could be made. The reader-pcsc.c code could be merged to have a cardmod mode. the ctx->app_name could be used to detect cardmod mode. I think there is a possible race condition in the code as it stand now, if two threads try and create contexts at the same time. This might occur if there are two reader with two cards at the same time when a login is attempted. sc_get_cardmod_driver copies the pcsc_drv->ops over its own cardmod_ops. These structures are static... For example, looking at cardmod_ops.lock. thread 1 calls sc_get_cardmod_driver cardmod_ops.lock == undetermined. thread 1 #1901 cardmod_ops = *(pcsc_drv->ops); cardmod_ops.lock == pcsc_lock thread 1 #1907 cardmod_ops.lock = NULL; cardmod_ops.lock = NULL thread 2 calls sc_get_cardmod_driver cardmod_ops.lock = NULL thread 2 #1901 cardmod_ops = *(pcsc_drv->ops); cardmod_ops.lock == pcsc_lock thread 1 does a lock operation and ends up using pcsc_lock !!! thread 2 #1907 cardmod_ops.lock = NULL; cardmod_ops.lock = NULL -- Douglas E. Engert <deeng...@anl.gov> Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel