| Предыдущий | Следующий |
| kIOReturnOffline | kIOReturnNotAttached |
kIOReturnNotReady
Готовность не равнозначна присутствию
kIOReturnNotReady — временный результат готовности. IOKit распознаёт устройство, но драйвер не может выполнить запрошенное действие в данный момент. Типичные примеры: инициализация носителя, пробуждение устройства из энергосберегающего состояния, завершение сброса или перечисления контроллера либо ожидание службой хранилища готовности нижнего уровня.
Практическое различие важно: повтор может быть уместен, но только после изменения состояния или ограниченной задержки. Слепое увеличение тайм-аутов не исправит ситуацию, если готовность не наступает из-за неудачной конфигурации, отсутствующего носителя, питания или драйвера, не продвигающегося по пути запуска.
Как безопасно обрабатывать
- Зафиксируйте состояние устройства и питания, активную конфигурацию и время с подключения или пробуждения.
- Используйте уведомления готовности семейства или документированный асинхронный путь завершения, если он доступен.
- Увеличивайте паузу между повторами и ограничивайте их общую длительность; предоставляйте вызывающей стороне осмысленный тайм-аут.
- После deadline отличайте неизменное not-ready от удаления, отсутствия носителя или ответа до выбора восстановления.
Ссылки
- Apple: справочник IOReturn.h
- Apple IOKit Fundamentals: обзор архитектуры
- USB-IF: спецификация USB 2.0
Нужно найти другой код? Найти другой код состояния или ошибки.