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

Reply via email to