Site icon EfmSoft

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

 
Предыдущий Следующий
kIOUSBDataToggleErr kIOUSBWrongPIDErr

kIOUSBPIDCheckErr

Самому идентификатору пакета нельзя доверять

kIOUSBPIDCheckErr означает, что стек USB не смог проверить идентификатор пакета и потому не мог надёжно классифицировать пакет. USB PID содержит тетраду идентификатора и комплементарную контрольную тетраду. Это отдельный механизм от CRC5 и CRC16 для полей токена и данных, хотя старые формулировки IOUSBFamily могут называть состояние ошибкой CRC идентификатора.

Различие важно для диагностики. При kIOUSBWrongPIDErr PID читается, но не соответствует фазе транзакции, ожидаемой хостом. При kIOUSBPIDCheckErr не проходит собственная проверка PID, поэтому верхние уровни не могут надёжно определить тип принятого пакета. Это не следует трактовать как ошибку формата прикладного запроса.

Полезные диагностические границы

Почему всё равно необходим контекст передачи

macOS различает поведение управляющих, interrupt, bulk и isochronous передач. Требования к повтору и восстановлению зависят от класса передачи, поэтому в журнале должны быть класс и конечная точка, а не только числовой результат IOKit.

Ссылки


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

Exit mobile version