I have two readers (HID OMNIKEY 5321) in system (every reader performs a different function)
- reader 1 - "Smart Card Reader 0"
- reader 2 - "Smart Card Reader 1"
In my program is set up that
- "Smart Card Reader 0" - action 1
- "Smart Card Reader 1" - action 2
but sometimes (without rebooting, perhaps lost contact)
- reader 1 gets name "Smart Card Reader 1"
- reader 2 gets name "Smart Card Reader 0"
and the program does not do what users need. I use SCardGetStatusChange (requires the name of the reader) in WinScard.dll
What to do? Is there a way to change the name of the reader (firmware, drivers...)? Is it possible to use the serial number of the reader?
I also looked, but no result Smartcard reader naming: when removing any reader, the name of the rest changes How are PCSC smart card reader 'friendly names' constructed?
found a solution Getting PCSC reader serial number with WinSCard
serial number reader
...
SCardConnect(hContext, readerName, SCARD_SHARE_DIRECT, SCARD_PROTOCOL_UNDEFINED, ref hCard, ref protocol);
SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_IFD_SERIAL_NO, receiveBuffer, ref receivebufferLen);
...
Maybe you should focus on the smartcard inserted in / connected to the reader rather than the reader itself and use card specific information (i.e. serial number or label) to choose the correct reader.
来源:https://stackoverflow.com/questions/24612817/smartcard-reader-naming