| Предыдущий | Следующий |
| kIOReturnOverrun | kIOReturnNoCompletion |
kIOReturnDeviceError
Симптом на уровне устройства без указания причины
kIOReturnDeviceError в общем заголовочном файле обозначается как неправильная работа устройства. Этот результат более непосредственно относится к устройству, чем общий kIOReturnIOError, но всё равно не указывает отказавший компонент, шину, носитель, состояние питания или этап протокола. Рассматривайте его как симптом, который нужно сопоставить со службой и запросом, его возвратившими.
Перед повтором команды, изменяющей состояние, выясните, не успело ли устройство выполнить её частично. Сброс, повторное подключение или повторное обнаружение допустимы только тогда, когда это разрешают правила жизненного цикла соответствующего семейства. Повторное использование кэшированного интерфейса после сброса или удаления устройства может скрыть исходное состояние последующими ошибками.
Полезные диагностические данные
- Запишите идентификатор устройства, активную конфигурацию, тип запроса, направление операции и все предшествующие тайм-ауты, сбросы или события питания.
- Проверяйте системную диагностику и журналы драйвера ответственного семейства IOKit, а не полагайтесь только на общий код результата.
- Отделите воспроизводимый сбой конкретного запроса от состояния, возникающего после физического отключения, потери питания или повторного перечисления устройства.
- Повторяйте только идемпотентные операции и лишь после повторной проверки целевого устройства.
Ссылки
- Исходный код Apple XNU: IOReturn.h
- Apple: введение в основы IOKit
- Apple: управление удалением устройств
Нужно найти другой код? Найти другой код состояния или ошибки.
