| Предыдущий | Следующий |
| kIOReturnNoCompletion | kIOReturnNoBandwidth |
kIOReturnAborted
Отмена требует решения о владении
kIOReturnAborted сообщает о прерванной операции. Он может возвращаться после явной отмены, остановки драйвера, сброса, удаления устройства или высокоуровневого изменения состояния, из-за которого ожидающий ввод-вывод оставлен без завершения. Результат не означает, что оборудование отклонило запрос, и не гарантирует, что никакая часть изменяющего состояние запроса не достигла устройства.
Для вызывающей стороны ключевым является контракт завершения операции. Запросы чтения после восстановления можно просто запланировать заново. Перед повтором команд, записывающих данные, изменяющих конфигурацию, извлекающих носитель или запускающих внешнее действие, требуется подтверждение, номер последовательности или проверка постусловия; иначе гонка отмены может создать дублирующую работу.
Что делать дальше
- Запишите, кто запросил отмену и какое событие жизненного цикла устройства происходило в это время.
- Завершите или пометьте ожидающие запросы, чтобы их позднее завершение не приняли за новую операцию.
- Сделайте буферы и дескрипторы недействительными, если прерывание сопровождало сброс, отсоединение или завершение службы.
- Повторяйте запрос только после подтверждения готовности устройства и возможности определить, вступила ли предыдущая операция в силу.
Ссылки
- Справочник Apple IOReturn.h
- Основы Apple IOKit: обзор архитектуры
- Жизненный цикл устройств и захват интерфейсов в libusb
Нужно найти другой код? Найти другой код состояния или ошибки.