| Предыдущий | Следующий |
| kIOUSBEndpointCountExceeded | kIOUSBClearPipeStallNotRecursive |
kIOUSBDevicePortWasNotSuspended
Предусловие состояния питания оказалось ложным
kIOUSBDevicePortWasNotSuspended означает, что операция, ожидавшая состояние suspend у порта устройства, обнаружила его активным. Это несовпадение состояния порта, а не доказательство неисправности устройства. Различие важно, поскольку противоположный статус kIOUSBPortWasSuspended возвращается, когда существующая передача отправлена обратно из-за наступившей приостановки.
Управление питанием USB меняет условия постановки и возобновления транзакций. Запрос, конкурирующий с resume, активностью концентратора или переходом состояния контроллера, может увидеть иное состояние порта, чем предполагала вызывающая сторона. Поэтому трасса должна включать переход состояния, а не только итоговый USB-код.
Проверьте переход состояния
- Запишите целевой порт, путь вышестоящего концентратора, контроллер и сведения о том, относилась ли операция к suspend, resume, reset или восстановлению.
- Сериализуйте операции состояния порта, чтобы два клиента не делали противоречащие предположения о suspend одного устройства.
- Проверяйте фактическое состояние порта перед действием, документированным предусловием которого является приостановка.
- Не скрывайте статус общим сбросом; сначала выясните, не использовала ли вызывающая сторона недопустимый переход состояния.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.