| Предыдущий | Следующий |
| kIOReturnLockedWrite | kIOReturnBadMessageID |
kIOReturnExclusiveAccess
Что защищает эксклюзивный доступ
kIOReturnExclusiveAccess означает, что один из клиентов уже эксклюзивно открыл соответствующее устройство или интерфейс. Ограничение не позволяет независимым клиентам одновременно отправлять конфликтующие команды, менять состояние или использовать пути данных. Для USB-интерфейсов Apple документирует эксклюзивное открытие и возвращает этот статус, когда существующий клиент отказывается освободить интерфейс.
Это не ошибка разрешений. Повышение привилегий процесса не сделает работу второго клиента безопасной. Требуется согласовать владение: использовать существующую службу, попросить владельца освободить объект, выбрать другой интерфейс либо создать посредник, последовательно выполняющий запросы клиентов.
Как диагностировать состояние
- До разрушительного сброса определите процесс, драйвер или системную службу, владеющую интерфейсом.
- Проверьте, не захвачена ли функция драйвером ядра; USB-библиотеки пользовательского пространства также сообщают об ошибке занятости или захвата интерфейса.
- Каждое успешное открытие должно сопровождаться закрытием или освобождением на всех путях обработки ошибок, чтобы приложение само не создало постоянную блокировку.
- Не используйте API принудительного захвата как обычный обходной путь: принудительное получение устройства может нарушить состояние протокола другого клиента.
Ссылки
- Справочник Apple по IOReturn.h
- Справочник Apple по USBInterfaceOpenSeize
- Жизненный цикл устройств и захват интерфейсов в libusb
Нужно найти другой код? Найти другой код состояния или ошибки.