| Предыдущий | Следующий |
| kIOReturnIPCError | kIOReturnNotPrivileged |
kIOReturnNoDevice
Что означает этот результат
kIOReturnNoDevice — результат IOKit для операции, целевое устройство или служба которой больше недоступны. Он часто возникает после отключения периферийного устройства, повторного перечисления USB-устройства, исчезновения накопителя или завершения объекта службы, предоставившего дескриптор пользовательскому процессу. Само число не указывает шину: значения IOKit общие для многих семейств оборудования.
Не продолжайте использовать дескриптор только потому, что его числовое значение всё ещё хранится в приложении. Устройство может исчезнуть между обнаружением и следующей передачей, а повторное подключение может создать новый объект реестра с другой конфигурацией и интерфейсами. Это граница жизненного цикла, а не указание бесконечно повторять тот же запрос.
Полезные действия для восстановления
- Остановите незавершённую работу с целевым объектом и аннулируйте кэшированный объект устройства или интерфейса в приложении.
- Отслеживайте соответствующее уведомление об удалении или завершении, а после появления устройства выполните обнаружение заново.
- Запишите путь в реестре, идентификаторы производителя и продукта, активную конфигурацию и выполняемую операцию; физическое повторное подключение и перезапуск драйвера — разные события.
- Повторяйте операцию только после нового открытия и настройки и лишь тогда, когда её безопасно выполнять повторно.
Ссылки
- Справочник Apple по IOReturn.h
- Основы Apple IOKit: обзор архитектуры
- Жизненный цикл устройств и захват интерфейсов в libusb
Нужно найти другой код? Найти другой код состояния или ошибки.