Search code examples
c#smartcardsmartcard-readerpcscwinscard

Smartcard reader naming


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?


Solution

  • 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);
    ...