我正在尝试将 APDU 命令发送到读卡器本身而不是智能卡。我正在使用的测试命令打开和关闭射频场。
如果我第一次连接到智能卡,此命令将通过 SCardTransmit 发送。但是一旦 RF 场关闭,卡就会断开连接,我无法发送另一个 APDU 来打开场。
基本上有什么方法可以在没有卡的情况下通过 pc/sc 发送 APDU。我想在读卡之前配置读卡器的某些部分。
提前致谢。
- - -编辑 - - -
正如 FPGA Warrior 提到的,我需要使用 SCardControl 将 APDU 命令发送到读卡器。
到目前为止我已经完成的步骤:
使用 SCardConnect 与 SCARD_SHARE_DIRECT 和 SCARD_PROTOCOL_UNDEFINED 连接到“卡”。这将返回成功并为您提供卡句柄。
_lastError = SCardConnect(_hContext, _cardReaderName, dwShareMode, dwPreferredProtocols, ref phCard, ref _activeProtocol);
返回:0 和看起来像一个有效的 _hCard 句柄。
然后我打电话给 SCardControl
_lastError = SCardControl(phCard, CTL_code(3500), txBytes, (uint)txByte.Length, out rxBytes, (uint)rxAttr.Length, out rxLen);
我现在收到错误 ERROR_INVALID_HANDLE (0x6)。因此,我的 SCardConnect 似乎没有返回有效的句柄,即使它没有返回错误。
作为在设备上使用 PC_to_RDR_Escape 模式的附带说明,如果您安装的驱动程序不允许,您可能需要编辑注册表以将其打开。 https://msdn.microsoft.com/en-us/library/windows/hardware/dn653571%28v=vs.85%29.aspx