ISO 15693: сбой SCardReconnect, хотя SCardConnect и SCardTransmit успешно (C#)
Я пытаюсь реализовать код, который будет выполнять SCardReconnect для определенных условий ошибки при попытке считывания карты RFID TI Tag-IT с помощью устройства чтения смарт-карт HID 5321. В случае ошибки передачи я пытаюсь переподключиться и повторяю операцию. Однако, когда я выполняю переподключение, я получаю возвращаемое значение 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);
Это довольно актуальный вопрос. У кого-нибудь случается, что происходит? Заранее благодарю всех за помощь!
1 ответ
При первом рассмотрении я бы предположил, что вы не должны передавать m_hCard в качестве ссылки. Также я бы восстановил соединение, используя протокол, полученный от начального соединения, в качестве предпочтительного протокола:
int iRetval = HID.SCardReconnect(m_hCard,
HiDWinscard.SCARD_SHARE_SHARED,
m_protocol,
0, //Leave card alone SCARD_LEAVE_CARD
ref m_protocol);