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

 
Предыдущий Следующий
kIOUSBBufferOverrunErr kIOUSBNotSent1Err

kIOUSBBufferUnderrunErr

Недостаток данных относится к пути передачи

kIOUSBBufferUnderrunErr — парный устаревшему статусу переполнения буфера результат. Определение IOUSBFamily связывает его с аппаратным состоянием хоста или шины во время пути вывода данных, а не с собственным кодом ответа класса устройства. Он означает, что конвейеру передачи не хватило данных или буферизации в требуемый момент обработки.

Это отличается от обычного короткого пакета, который допустим для некоторых типов USB-передач и протоколов. Также это не остановка конечной точки устройства: underrun не означает, что устройство намеренно отклонило конечную точку. Нужно определить, на какой стадии возник недостаток — у производителя приложения, в поставленном запросе, пути DMA или контроллера либо при переходе питания.

Диагностическая граница

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

Ссылки


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