Что означает код HRESULT 0x80100007 (SCARD_F_WAITED_TOO_LONG)?

 
Предыдущий Следующий
SCARD_E_NO_MEMORY SCARD_E_INSUFFICIENT_BUFFER

SCARD_F_WAITED_TOO_LONG

Не путайте это с тайм-аутом вызывающей стороны

SCARD_F_WAITED_TOO_LONG — статус сбоя диспетчера ресурсов смарт-карт. Он отличается от SCARD_E_TIMEOUT, который означает истечение периода ожидания, заданного вызывающей стороной. Здесь стек PC/SC обнаружил, что один из его внутренних таймеров согласованности истёк при обслуживании считывателя, карты, контекста или незавершённой операции.

Поскольку код относится к уровню диспетчера ресурсов, немедленный цикл вокруг того же вызова может скрыть реальную проблему. Запишите API, вернувший ошибку, имя считывателя, контекст диспетчера ресурсов и наличие другого потока, ожидающего в SCardGetStatusChange или удерживающего транзакцию карты. Затем повторно запросите состояние считывателя и создайте новый контекст, если состояние службы или считывателя изменилось.

Полезные проверки

  • Различайте в журналах ограничение ожидания приложения и сбой инфраструктуры PC/SC: для них нужны разные пути восстановления.
  • Убедитесь, что длительные транзакции карты своевременно завершаются. Windows указывает, что бездействующая транзакция карты может привести к сбросу.
  • Проверьте журналы считывателя и службы Smart Card до перезапуска приложения, особенно если результат стабильно воспроизводится с одним считывателем.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.