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

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

kIOUSBPipeStalled

Остановка относится к конечной точке, а не обязательно ко всему устройству

kIOUSBPipeStalled сообщает, что запрошенный канал остановлен. Stall отличается от тайм-аута: это определённое состояние endpoint, и ещё одна передача по тому же каналу сама по себе не является корректным восстановлением. Другие интерфейсы и конечные точки устройства могут оставаться работоспособными, поэтому диагностика только по имени устройства обычно слишком груба.

Документация Apple по USB различает очистку канала на стороне контроллера и восстановление состояния endpoint устройства. Корректная последовательность может требовать управляющего запроса, определённого протоколом, повторной синхронизации data toggle и явной обработки запросов, ожидавших завершения в момент обнаружения halt. Безопасный порядок зависит от типа передачи и класса устройства.

Перед повторной отправкой работы

  • Сохраните адрес конечной точки, тип и направление передачи, команду или протокольную операцию и идентификаторы всех поставленных запросов.
  • Установите, требует ли протокол устройства отдельной команды восстановления помимо очистки канала на стороне хоста.
  • Учтите возвращённые или отменённые асинхронные запросы и проверьте обработку data toggle до возобновления обычного трафика.
  • Не воспроизводите неидемпотентную команду, пока протокол устройства не подтвердит, была ли она принята до остановки.

Ссылки


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