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

 
Предыдущий Следующий
kIOUSBEndpointCountExceeded kIOUSBClearPipeStallNotRecursive

kIOUSBDevicePortWasNotSuspended

Предусловие состояния питания оказалось ложным

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

Управление питанием USB меняет условия постановки и возобновления транзакций. Запрос, конкурирующий с resume, активностью концентратора или переходом состояния контроллера, может увидеть иное состояние порта, чем предполагала вызывающая сторона. Поэтому трасса должна включать переход состояния, а не только итоговый USB-код.

Проверьте переход состояния

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

Ссылки


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