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

 
Предыдущий Следующий
kIOUSBTransactionTimeout kIOUSBConfigNotFound

kIOUSBPortWasSuspended

Состояние питания прервало транзакцию

kIOUSBPortWasSuspended определяет переход порта в suspend как причину возврата активной транзакции. Это конкретнее общего тайм-аута: запрос был прерван управлением питанием USB на пути к устройству. Само состояние не доказывает отключение устройства, потерю конфигурации или допустимость простого повтора той же команды приложением.

Приостановка — переход состояния устройства и хост-контроллера. К моменту вызова асинхронного callback устройство могло возобновить работу, остаться приостановленным либо изменить состояние из-за удаления и повторного перечисления. Поэтому перед продолжением клиент должен заново проверить текущий жизненный цикл устройства и интерфейса.

Что проверить

  • Запишите путь порта, расположение устройства, конечную точку, ожидающую операцию, системное событие питания и состояние открытия интерфейса в момент завершения.
  • До повторного использования дескрипторов и ссылок на каналы, созданных до suspend, проверьте удаление, повторное перечисление и изменение конфигурации.
  • Обработайте возвращённый запрос как самостоятельное завершение; не отбрасывайте его только потому, что позднее ожидается уведомление resume.
  • По протоколу устройства определите, можно ли продолжить операцию после resume, требуется ли начать её заново или выполнить новое обнаружение и открытие.

Ссылки


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