| Предыдущий | Следующий |
| kIOUSBTransactionTimeout | kIOUSBConfigNotFound |
kIOUSBPortWasSuspended
Состояние питания прервало транзакцию
kIOUSBPortWasSuspended определяет переход порта в suspend как причину возврата активной транзакции. Это конкретнее общего тайм-аута: запрос был прерван управлением питанием USB на пути к устройству. Само состояние не доказывает отключение устройства, потерю конфигурации или допустимость простого повтора той же команды приложением.
Приостановка — переход состояния устройства и хост-контроллера. К моменту вызова асинхронного callback устройство могло возобновить работу, остаться приостановленным либо изменить состояние из-за удаления и повторного перечисления. Поэтому перед продолжением клиент должен заново проверить текущий жизненный цикл устройства и интерфейса.
Что проверить
- Запишите путь порта, расположение устройства, конечную точку, ожидающую операцию, системное событие питания и состояние открытия интерфейса в момент завершения.
- До повторного использования дескрипторов и ссылок на каналы, созданных до suspend, проверьте удаление, повторное перечисление и изменение конфигурации.
- Обработайте возвращённый запрос как самостоятельное завершение; не отбрасывайте его только потому, что позднее ожидается уведомление resume.
- По протоколу устройства определите, можно ли продолжить операцию после resume, требуется ли начать её заново или выполнить новое обнаружение и открытие.
Ссылки
- Apple: коды ошибок IOUSBFamily
- Apple: работа с интерфейсами USB-устройств
- libusb, backend Darwin: обработка приостановленных USB-устройств
Нужно найти другой код? Найти другой код состояния или ошибки.