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

 
Предыдущий Следующий
kIOFireWireMultipleTalkers kIOFireWireNoListenerOrTalker

kIOFireWireChannelActive

Активный канал — не пустое резервирование

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

Не классифицируйте это как ошибку транспорта или доказательство отказа кабеля, камеры либо аудиоинтерфейса. Результат отличается от kIOFireWireMultipleTalkers, где топология потока нарушает правило одного передатчика, и от kIOFireWireChannelNotAvailable, где запрошенный ресурс канала нельзя выделить. Здесь важен жизненный цикл существующего объекта канала.

Безопасная последовательность исследования

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

Ссылки


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