| Предыдущий | Следующий |
| kIOReturnNotAttached | kIOReturnNoSpace |
kIOReturnNoChannels
Не удалось выделить ресурс передачи
kIOReturnNoChannels означает, что путь IOKit не смог получить ресурс канала, необходимый операции. Название историческое и не доказывает, что все физические DMA-каналы компьютера навсегда исчерпаны. Семейство драйверов может использовать этот код для недоступной в текущем состоянии устройства очереди, потока или выделения DMA, специфичных для контроллера.
Этот результат отличается от kIOReturnNoFrames: последний означает, что в очередь не поставлены DMA-кадры, тогда как здесь у вызывающей стороны ещё нет пригодного канала или эквивалентного пути передачи. Само по себе увеличение буфера приложения не устраняет конфликт распределения ресурсов.
Как сузить область поиска
- Запишите устройство, интерфейс и операцию, запросившие канал, включая сведения о том, не удерживает ли другой клиент эксклюзивный или потоковый режим.
- Проверьте параллельный захват, воспроизведение, работу хранилища или управление устройством, использующие тот же контроллер или интерфейс.
- Закройте брошенные интерфейсы и дождитесь документированных обратных вызовов завершения или разборки, прежде чем снова открывать устройство.
- При разработке драйвера журналируйте выделение и освобождение соответствующей очереди или объекта канала, а не только окончательное значение IOReturn.
Ссылки
- Apple Developer: kIOReturnNoChannels
- Исходный код Apple XNU: IOReturn.h
- Основы Apple IOKit: обзор архитектуры
Нужно найти другой код? Найти другой код состояния или ошибки.