Что означает код возврата ядра macOS 0xE0004051 (kIOUSBTransactionTimeout)?

 
Предыдущий Следующий
kIOUSBTransactionReturned kIOUSBPortWasSuspended

kIOUSBTransactionTimeout

Тайм-аут не определяет отказавший уровень

kIOUSBTransactionTimeout означает, что транзакция достигла тайм-аута до сообщения об обычном завершении. Это отличается от kIOUSBPipeStalled, обозначающего остановленную конечную точку, и от kIOUSBPortWasSuspended, обозначающего прерывание состоянием питания. Один и тот же тайм-аут может быть вызван отсутствием ответа устройства, ожиданием данных endpoint, занятостью шины, неправильной протокольной последовательностью или слишком коротким тайм-аутом приложения для допустимой операции.

Сам код не определяет состояние высокоуровневой команды. Интерфейсы завершения предоставляют сведения конкретного запроса, например остаточную длину буфера, а протокол устройства мог частично обработать команду до того, как хост прекратил ожидание. Слепой повтор способен продублировать неидемпотентную работу.

Полезные данные

  • Запишите адрес endpoint, направление и тип передачи, запрошенную длину, величину тайм-аута, остаточную длину, активную конфигурацию и alternate setting.
  • Сохраните предшествующие управляющие или bulk-обмены и статус устройства, если он доступен, вместо опоры только на код тайм-аута.
  • Сравните настроенный тайм-аут с документированной длительностью конкретной операции устройства.
  • Выбирайте повтор, прерывание или повторное перечисление по протоколу устройства и идемпотентности операции, а не только по коду тайм-аута.

Ссылки


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