【发布时间】:2015-02-16 10:53:31
【问题描述】:
我正在尝试向读卡器本身而不是智能卡发送 APDU 命令。我正在使用的测试命令打开和关闭射频场。
如果我第一次连接到智能卡,此命令将通过 SCardTransmit 发送。但是一旦 RF 场关闭,卡就会断开连接,我无法发送另一个 APDU 来打开场。
基本上有什么方法可以在没有卡的情况下通过 pc/sc 发送 APDU。我想在读卡之前配置读卡器的某些部分。
提前致谢。
-----编辑-----
正如 FPGA Warrior 所说,我需要使用 SCardControl 向读卡器发送 APDU 命令。
到目前为止我已经完成的步骤:
使用带有 SCARD_SHARE_DIRECT 和 SCARD_PROTOCOL_UNDEFINED 的 SCardConnect 连接到“卡”。这将返回成功并为您提供卡句柄。
_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
【问题讨论】:
-
@MichelGutierrezRivas 想知道您是否解决了问题
标签: apdu smartcard-reader pcsc