| Предыдущий | Следующий |
| kIOReturnDeviceError | kIOReturnAborted |
kIOReturnNoCompletion
Предусловие асинхронной операции
kIOReturnNoCompletion означает, что требуется процедура завершения. Выбранный API или режим ожидает путь, по которому вызывающая сторона узнает о завершении, ошибке или отмене поставленной в очередь либо асинхронной работы. Это ошибка контракта, а не тайм-аут устройства.
Добавление пустого обратного вызова только ради подавления ошибки может потерять сведения о владении и очистке. Механизм завершения должен соответствовать правилам жизненного цикла интерфейса: он может освобождать буферы, наблюдать частичное завершение, планировать следующий запрос или останавливать работу после удаления. Проверьте контракт обратного вызова и отмены конкретного API.
Что проверить
- Определите, является ли операция синхронной или асинхронной для выбранных интерфейса и режима.
- До постановки запроса предоставьте документированную процедуру завершения, контекст и управление временем жизни объектов.
- Убедитесь, что пути завершения, отмены и удаления освобождают ресурсы запроса ровно один раз.
- Запишите, попал ли запрос в очередь; отсутствие обработчика можно обнаружить до начала ввода-вывода устройства.
Ссылки
- Исходный код Apple XNU: IOReturn.h
- Apple: управление данными в IOKit
- Apple: управление удалением устройств
Нужно найти другой код? Найти другой код состояния или ошибки.