| Предыдущий | Следующий |
| kIOFWMessagePowerStateChanged | kIOBluetoothDeviceResetError |
kIOFWMessageTopologyChanged
Сообщение об изменении топологии шины FireWire обозначает ограниченную границу API или среды выполнения, а не общий сбой компьютера. Оно сообщает об изменении топологии FireWire, обычно после bus reset, добавления или удаления устройства; кэшированные node IDs и ресурсы могли стать недействительными.
Первый уровень доставки
Результаты IOKit, внутренние маркеры и сообщения служб проходят через пользовательское пространство, службы ядра и семейства оборудования. Одинаковое целочисленное представление не делает их роли взаимозаменяемыми при анализе изменения топологии FireWire.
Возвращаемые значения IOKit, внутренние маркеры и сообщения служб имеют разный смысл для потока управления при анализе изменения топологии FireWire. Определите, возвращает ли API значение или доставляет его как сообщение, и сохраняйте числовое значение, объявленный тип и первую операцию вместе с kIOFWMessageTopologyChanged; то же целое число может принадлежать другому пространству статусов в другом API.
Карта данных
| Что сохранить | Диагностическая ценность |
|---|---|
| Старое и новое поколение шины, node IDs, GUID, выделение каналов и полосы, а также подключённые службы. | Определяет конкретный объект и операцию, связанные с изменением топологии FireWire. |
| Числовое значение IOReturn или сообщения, декодированное по соответствующему заголовочному файлу SDK при анализе изменения топологии FireWire. | Отделяет состояние аргумента или жизненного цикла от нижележащего провайдера при анализе изменения топологии FireWire. |
| Поколение реестра и первое событие провайдера или клиента перед результатом. | Создаёт устойчивое сравнение состояния до и после изменения топологии. |
| Состояние заведомо исправного устройства или службы на той же сборке macOS и драйвера при анализе изменения топологии FireWire. | Показывает, является ли сообщение первичным результатом или преобразованной сводкой. |
Для сообщения об изменении топологии шины FireWire сохраните старое и новое поколение шины, node IDs, GUID, выделение каналов и полосы и подключённые службы до переустановки, перезагрузки или очистки состояния. Успех только после такого изменения полезен как сравнительный результат для сообщения об изменении топологии шины FireWire, но не устанавливает исходную причину.
Изменяйте по одному условию
- Выполните одно контролируемое подключение или отключение и сопоставьте сообщение топологии с повторным перечислением. Остальные входные данные оставьте неизменными.
- Измените одно условие топологии или жизненного цикла при неизменной полезной нагрузке запроса и запишите первый статус и переход состояния.
- Проверьте очистку и срок жизни объектов после контролируемой операции при анализе изменения топологии FireWire. Изменившийся результат означает новую границу, а не автоматическое устранение при анализе изменения топологии FireWire.
Точки принятия решения
| Наблюдаемое сравнение | Следующий проверяемый вывод |
|---|---|
| Первая контрольная проверка изменила результат | Сосредоточьтесь на подключении или отключении одного устройства и связи сообщения топологии с повторным перечислением. |
| Вторая проверка изменения топологии воспроизводит тот же первый статус | Сохраните данные нижележащего провайдера, драйвера, службы или среды выполнения. Вторая проверка изменяла одно условие топологии или жизненного цикла при неизменной полезной нагрузке. |
| После ограниченного изменения сообщение сменилось другим статусом | После третьей проверки операция перешла к другой границе. Сохраните оба результата и интерпретируйте заменивший статус по его собственному контракту API при анализе изменения топологии FireWire. |
Исправление и регрессионная проверка
Целевое исправление. Сделайте недействительными node IDs старого поколения и заново создайте выделения по стабильным GUID устройств. Для сообщения об изменении топологии шины FireWire изменяйте только состояние, на которое указывают собранные данные.
Критерий приёмки. Клиенты выполняют одно повторное перечисление, связываются с нужным устройством по стабильной идентичности и отклоняют запросы старого поколения. Повторите исходную операцию, при которой возникло сообщение об изменении топологии шины FireWire с исходной идентичностью и поддерживаемой конфигурацией, затем сохраните одну отрицательную контрольную проверку.
Технические ссылки
Эти источники определяют пространство имён и контракт подсистемы, необходимые для проверки kIOFWMessageTopologyChanged в используемой версии платформы.
- Apple XNU: определения IOReturn — определяет пространство статусов сообщений FireWire.
- Apple: документация IOKit — описывает границу API и жизненного цикла при изменении топологии.
- Apple OSS: исходный код XNU — предоставляет контекст ABI, реализации и протокола при анализе изменения топологии FireWire.
- Apple XNU: общие определения семейства FireWire — помогает учитывать ограничения переносимости и проверки сообщения.
Нужно найти другой код? Найти другой код состояния или ошибки.