| Предыдущий | Следующий |
| kIOFireWireCompleting | kIOFireWireIsochBandwidthNotAvailable |
kIOFireWireInvalidResponseLength
Получен ответ непригодного размера
kIOFireWireInvalidResponseLength конкретнее общей транспортной ошибки: код семейства FireWire получил или обработал ответ, длина которого недопустима для операции. Следует сравнивать ожидаемую форму ответа операции с фактической длиной, учитывая код транзакции и контекст команды.
Не сводите это к общей диагностике переполнения буфера. Ответ может быть короче или длиннее ожидаемого, а правильное действие зависит от того, допускает ли протокол переменную полезную нагрузку, сформирован ли запрос с правильными tcode и адресным пространством и относится ли ответ к нужному поколению.
Сохраняйте обе стороны контракта
- Запишите ожидаемую и фактическую длину, tcode, целевой узел, адрес или смещение, поколение шины и доступный заголовок полезной нагрузки.
- Проверьте, что запрос создан для правильного удалённого блока и операции адресного пространства.
- Проверьте границы буфера до разбора данных ответа; не разбирайте полезную нагрузку только потому, что были возвращены какие-то байты.
- Отличайте неверный или неожиданный размер ответа от сброса шины, отдельно представленного
kIOFireWireBusReset.
Ссылки
- Apple: IOFireWireFamilyCommon.h
- Apple: IOFireWireDeviceInterface
- Ядро Linux: руководство по интерфейсу драйверов FireWire
Нужно найти другой код? Найти другой код состояния или ошибки.
