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);
Другие вопросы по тегам