PCSC智能卡读卡器"友好名称"是如何构建的?



我使用 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_MACHINESYSTEMCurrentControlSetServices密钥。在此注册表项下,您可以找到与读卡器的"服务"匹配的子项(我通过查询WMI注册表找到该服务)。例如:SCM Microsystems Inc. SCR3320 USB Smart Card Reader读者的服务是SCR3XX2K

这个子项(SCR3XX2K)有另一个子项Enum,它有多个有趣的值:

  • Count:DWORD,连接的读卡器数量
  • 012 : 字符串, 硬件设备 ID

我想这些是附加到"友好名称"的数字,但我无法弄清楚名称字符串是如何构造的。我需要它将硬件设备 ID(我通过 WMI 获得)映射到它们的友好名称。

那么,用于为智能卡读卡器创建"友好名称"的模式是什么,这些值来自哪里?

它们是这 3 个属性的串联:

SCARD_ATTR_VENDOR_NAME
SCARD_ATTR_VENDOR_IFD_TYPE
SCARD_ATTR_DEVICE_UNIT

TechNet 文章智能卡事件在"智能卡读卡器名称"部分中对此进行了记录。

SCARD_???属性是使用 SCardGetAttrib 函数请求的。

SCARD_ATTR_DEVICE_SYSTEM_NAME 属性返回的friendly name与您在列出读取器时获得的一样。

智能卡读卡器的列表存在于注册表中的 HKLMSOFTWAREMicrosoftCryptographyCalaisReaders 下。读取器由 SCR 驱动程序的 INF 文件添加到此列表中,因此在驱动程序安装期间。

设备和读卡器之间的链接可以在智能卡读取器类中找到 {50DD5230-BA8A-11D1-BF5D-0000F805F530} HKLMSYSTEMCurrentControlSetControlClass{50DD5230-BA8A-11D1-BF5D-0000F805F5‌​30} 下。

相关内容

  • 没有找到相关文章

最新更新