| Предыдущий | Следующий |
| kIOUSBConfigNotFound | kIOUSBNotEnoughPowerErr |
kIOUSBEndpointNotFound
В текущем интерфейсе нет подходящей конечной точки
kIOUSBEndpointNotFound означает, что запрошенная конечная точка недоступна в активном USB-интерфейсе. Адрес конечной точки не является дескриптором всего устройства: он задаётся дескрипторами конечных точек конкретного интерфейса и может измениться при смене конфигурации или альтернативной настройки. Для операции также важны направление и тип передачи.
Поэтому сохранять номер конечной точки после переключения конфигурации небезопасно. Устройство может предоставить тот же номер интерфейса с другой альтернативной настройкой, другим набором конечных точек или вообще без нужной конечной точки. Ошибка устраняется исследованием дескрипторов, а не увеличением индекса канала или повтором передачи.
Что следует проверить
- Запишите активную конфигурацию, номер интерфейса, альтернативную настройку, адрес и направление конечной точки и ожидаемый тип передачи.
- Разберите дескрипторы конечных точек выбранной настройки интерфейса и сопоставьте их с запрошенной конечной точкой.
- После смены конфигурации или альтернативной настройки создайте привязки каналов заново; старые ссылки больше не описывают текущий набор конечных точек.
- Отделяйте выбор конечной точки протокола от выбора устройства в интерфейсе пользователя, чтобы переподключение не использовало незаметно недействительную ссылку на канал.
Ссылки
- Apple: USB-устройства, интерфейсы и дескрипторы конечных точек
- Исходный код IOUSBFamily: создание интерфейсов и каналов
- Apple: коды ошибок IOUSBFamily
Нужно найти другой код? Найти другой код состояния или ошибки.
