Le 08/08/2011 16:31, Ludovic Rousseau a écrit : > 2011/7/19 Viktor Tarasov<viktor.tara...@gmail.com>: >> Le 18/07/2011 14:52, Ludovic Rousseau a écrit : >>> 2011/7/10 Viktor Tarasov<viktor.tara...@gmail.com>: >>>> Hi, >>> Hello, >>> >>>> there is patch proposal to treat properly the 'detach token(reader)' >>>> event >>>> and to remove the slots associated to the removed token. >>>> >>>> Tested in Linux and windows. >>>> 'SCardGetStatusChange' have different behavior in Linux and Windows. >>>> Needs to be studied and validated for Mac. >>>> >>>> >>>> https://github.com/viktorTarasov/OpenSC/commit/62bda63bd66c4849c0ca4303a9682fb6f6bacd7d >>> /* When token is hot-unplugged: >>> * - in Linux (pcsc-lite) >>> * -- SCardGetStatusChange returns OK; >>> * -- current reader state is 'UNKNOWN'; >>> * -- 'Refresh-attributes' returns 'SC_ERROR_READER_DETACHED'. >>> * >>> * - in Windows (WinSCard): >>> * -- SCardGetStatusChange failes with SCARD_E_NO_READERS_AVAILABLE; >>> * -- 'Refresh-attributes' returns 'SC_ERROR_NO_READERS_FOUND'. >>> * >>> * - FIXME: Mac? >>> */ >>> >>> I just checked on Mac OS X 10.6.8 (Snow Leopard) and I have nearly the >>> same result as on GNU/Linux. >>> On GNU/Linux : new state is 14 => ['Changed', 'Unknown', 'Unavailable'] >>> On Mac OS X : new state is 6 => ['Changed', 'Unknown] >>> >>> On Windows, do you also get the error SCARD_E_NO_READERS_AVAILABLE >>> when you use TWO readers in the SCardGetStatusChange() call? >> I do not completely follow. >> >> SCardGetStatusChange is called by refresh_attributes(sc_reader_t *reader). >> In this context there is only one reader. >> >> When this reader is unplugged in Windows the SCardGetStatusChange returns >> 8010002E -- SCARD_E_NO_READERS_AVAILABLE. >> In Linux SCardGetStatusChange returns OK and properly sets a new reader >> status. >> Imho both have a reason. > I can't reproduce the "problem" on my Windows XP using my Python sample. > > If SCardGetStatusChange() is called with a removed/unknown reader then > Windows SCardGetStatusChange() returns with SCARD_E_UNKNOWN_READER. I > just changed pcsc-lite in revision 5881 to also return > SCARD_E_UNKNOWN_READER when called with unknown reader(s). > > If I unplug a reader while SCardGetStatusChange() is running I get > SCARD_S_SUCCESS and the new reader state is ['Ignore', 'Changed', > 'Unavailable'] > > Viktor, are you using Windows XP? or a newer version?
I use WindowsXP SP2 in VM and pkcs11-tool from OpenSC to make the tests . I will experiment with more debugs to get know the details of the calling context . For you the 'normal' behavior of SCardGetStatusChange() is to return SCARD_S_SUCCESS and appropriate reader status, is it so? > Bye Kind regards, Viktor. _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel