如何检测智能卡 Reader 接口特征

How To Detect Smart Card Reader Interface Characteristic

我在我的 Dotnet 智能卡应用程序中使用 winscard.dll。我的 reader,一台 Omnikey 5321 同时具有接触式和非接触式接口,它们被检测为两个不同的 reader。非接触式设备的名称中包含字母 "CL"。我手动选择 readers 并用它们做我需要做的一切都没有问题。

但是,是否有可靠的方法,使用 SCardGetAttrib 或其他调用,来确定这些 reader 中的哪些支持 ISO14443 - 即 EMV 非接触式?我最终想要一个快速的 "Select Contactless settings" 按钮,它足够通用,可以与所有 PC/SC reader 一起使用,因此如果没有这样的界面,我也可以禁用非接触式选项.

不,没有这样的方法,原因很简单,PCSC 比非接触式技术更早(古代的非接触式芯片更旧,但需要特殊的 readers 和驱动程序,因此没有重叠)。因此,只有 reader 名称的命名约定以制造商相关的方式提供此信息。实际上,这无关紧要。您没有标记您的 reader,因此用户能够 select 正确的,但通常只是简单地要求,用户将卡上的 in/lays 插入 [=13] =].然后 PCSC 将允许检测加载了哪个 reader,只要它只有一个。