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

 
Предыдущий Следующий
kIOReturnBadMedia kIOReturnRLDError

kIOReturnStillOpen

Условие жизненного цикла открытого устройства

kIOReturnStillOpen сообщает, что устройство всё ещё открыто. Это обычно важно при закрытии, удалении, завершении работы или изменении состояния, которое требует освобождения поставщика всеми клиентами. Модель удаления устройств IOKit явно координирует незавершённую работу и открытых клиентов до отсоединения и освобождения объектов.

Закрытия одного дескриптора приложения может быть недостаточно, если другой интерфейс, пользовательский клиент, объект драйвера или путь обработки ошибки сохранил открытие. Правильное восстановление состоит в обнаружении всех открытий и сопоставлении каждого успешного открытия или захвата с предусмотренной семейством операцией закрытия или освобождения. Принудительное удаление может оставить очередь запросов и состояние владения несогласованными.

Как сузить причину

  • Отслеживайте открытия, захваты, закрытия и освобождения по клиентам и экземплярам службы.
  • Перед окончательным завершением дождитесь выполнения или отмените незавершённые операции согласно контракту интерфейса.
  • При физическом удалении прекратите создавать новые запросы и следуйте уведомлениям об удалении, не используя прежний объект службы повторно.
  • Проверьте пути исключений и отмены на несопоставленное открытие, сохраняющееся после обычной очистки.

Ссылки


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