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

 
Предыдущий Следующий
kIOUSBDeviceCountExceeded kIOUSBDevicePortWasNotSuspended

kIOUSBEndpointCountExceeded

Устройство может существовать, хотя отдельную конечную точку создать нельзя

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

Значение имеют активная конфигурация и альтернативная настройка интерфейса, а не только число физических USB-устройств. Выбор другой альтернативной настройки меняет набор каналов; Apple документирует, что смена настройки прерывает незавершённый ввод-вывод, закрывает открытые каналы и аннулирует существующие объекты IOUSBHostPipe .

Как сузить причину

  • Запишите значение конфигурации, номер интерфейса, альтернативную настройку и каждый дескриптор конечной точки, который драйвер пытался активировать.
  • Сравните неудачную конфигурацию с рабочей. Богатая возможностями альтернативная настройка может требовать больше конечных точек, чем базовый режим того же устройства.
  • Проверьте топологию USB-контроллера, док-станции и концентратора на другие активные устройства, использующие ресурсы конечных точек того же контроллера.
  • После смены альтернативной настройки создайте ссылки на каналы заново и повторно ставьте только те операции, повтор которых разрешает протокол устройства; кэшированный объект канала после переключения недействителен.

Ссылки


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