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

Reply via email to