如何PCSC智能卡阅读器“友好名称”构建?(How are PCSC smart card read

2019-06-24 23:20发布

我用WinSCard列出所有的读者,这给了我这样一个列表:

ASK RDR4x7 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 1
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 2

这是伟大的,但我不知道它的名字属于哪个读卡器。

在哪里这些名字从何而来? 他们是如何构建的?

我已经找到了到现在为止:在注册表中,有一个HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services的关键。 在此项下,你可以找到相匹配的读卡器的“服务”(这是我通过查询WMI注册表中找到)的子项。 例如:对于服务SCM Microsystems Inc. SCR3320 USB Smart Card Reader的读者是SCR3XX2K

此子项( SCR3XX2K )还有一个子项Enum ,其中有多个有趣的值:

  • Count :DWORD,连接读卡器数量
  • 012 :STRING,硬件设备ID

我想这些都是附加在“友好名称”的数字,但名称字符串是如何构建我想不通。 我需要这个硬件设备ID(我通过WMI获得)映射到其友好的名称。

那么,什么是用来为智能卡阅读器建立一个“友好名称”的模式,以及在何处来自值?

Answer 1:

他们是这3个属性的concatination:

SCARD_ATTR_VENDOR_NAME
SCARD_ATTR_VENDOR_IFD_TYPE
SCARD_ATTR_DEVICE_UNIT

TechNet文章智能卡事件 “智能卡读写器名称”一节中记录了这一点。

SCARD_??? 属性要求与SCardGetAttrib 功能 。

SCARD_ATTR_DEVICE_SYSTEM_NAME属性返回friendly name当你同时列出了读者的人。

存在在注册表中的智能卡阅读器的列表HKLM\SOFTWARE\Microsoft\Cryptography\Calais\Readers 。 读者加入到这个名单由SCR驱动的INF文件,因此驱动程序安装过程。

设备和读取器之间的链路可以在SmartCardReader类中找到{50DD5230-BA8A-11D1-BF5D-0000F805F530}HKLM\SYSTEM\CurrentControlSet\Control\Class\{50DD5230-BA8A-11D1-BF5D-0000F805F5‌​30}



文章来源: How are PCSC smart card reader 'friendly names' constructed?