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? Bye -- Dr. Ludovic Rousseau _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel