我正在尝试实现代码,当尝试使用 HID 5321 智能卡读卡器读取 TI Tag-IT RFID 卡时,该代码将针对某些错误条件执行 SCardReconnect。如果发生传输错误,我会尝试重新连接并重试操作。但是,当我执行重新连接时,我得到一个返回值 6(无效句柄)。这是调用工作 SCardConnect 和不工作 SCardReconnect 的代码。
int iRetval = HID.SCardConnect(
m_hContext,
m_sReaderName,
HiDWinscard.SCARD_SHARE_SHARED,
HiDWinscard.SCARD_PROTOCOL_T1,
ref m_hCard,
ref m_protocol);
int iRetval = HID.SCardReconnect(ref m_hCard,
HiDWinscard.SCARD_SHARE_SHARED,
HiDWinscard.SCARD_PROTOCOL_T1,
0, //Leave card alone SCARD_LEAVE_CARD
ref m_protocol);
其中 m_hCard 和 m_protocol 相同(IntPtr)。
以下 SCardTransmit 也可以正常工作,并且它使用对 m_hCard 的相同引用
iRetval = HID.SCardTransmit(m_hCard, ref sioreq,
sendBuffer, sendbufferlen,
ref rioreq, receiveBuffer,
ref receivebufferlen);
这是一件相当紧迫的事情。有没有人碰巧知道可能发生了什么?我提前感谢大家的帮助!