Что означает код возврата ядра macOS 0xE0004060 (kIOUSBTooManyPipesErr)?

 
Предыдущий Следующий
kIOUSBNoAsyncPortErr kIOUSBUnknownPipeErr

kIOUSBTooManyPipesErr

Превышено ограничение интерфейса на стороне узла

kIOUSBTooManyPipesErr означает, что запрошенная операция использовала бы больше каналов, чем разрешает интерфейс. Канал связан с конечной точкой в текущей конфигурации и альтернативной настройке интерфейса, поэтому лимит нужно оценивать именно в этой области. Код не означает, что у устройства слишком много физических разъёмов или исчерпана вся полоса USB.

Повторные открытия или настройки после переподключения, восстановления или изменения альтернативной настройки могут вызвать это состояние, если приложение не освободило прежнее состояние интерфейса. Диагностика должна выявлять последовательность создания и уничтожения каналов, а не только конечную точку, на которой возникла последняя ошибка.

Как найти лишнее выделение

  • Отслеживайте каждый канал по конфигурации, интерфейсу, альтернативной настройке, адресу конечной точки, направлению и владельцу.
  • Убедитесь, что очистка после тайм-аута, отключения или сброса завершена до повторного открытия того же интерфейса.
  • Сравните запрошенное число каналов с дескрипторами конечных точек активной альтернативной настройки.
  • Не устраняйте проблему произвольным открытием другой конечной точки; сначала установите ожидаемый контракт интерфейса.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.