| Предыдущий | Следующий |
| kIOReturnNoResources | kIOReturnNoDevice |
kIOReturnIPCError
Проверяйте границу пользовательского клиента
kIOReturnIPCError — общий результат IOKit для ошибки при IPC. Сам по себе он не означает сбой передачи на уровне шины. При вызове IOKit из пользовательского пространства между процессом и стеком драйверов ядра находится пользовательский клиент, поэтому запрос может завершиться ошибкой при вызове метода, маршалинге запроса, обработке срока жизни конечной точки или доставке результата.
Сам код не показывает, какая конечная точка или стадия дала сбой. Отличайте его от kIOReturnIOError: сначала выясните, дошла ли операция до относящейся к устройству части стека. Удаление или сброс устройства, завершение службы, некорректный запрос либо специфический для реализации сбой связи требуют разных способов восстановления.
Как исследовать ошибку
- Журналируйте идентификатор службы, жизненный цикл соединения или интерфейса, селектор метода и размеры запроса и ответа.
- Проверьте, не произошло ли удаление устройства, завершение службы или очистка процесса между открытием пользовательского клиента и выполнением вызова.
- Сохраняйте и результат IOKit, и доступную через API низкоуровневую диагностику Mach или службы.
- Создавайте новое соединение после завершения старого только после повторного обнаружения текущего объекта службы; не используйте устаревший дескриптор.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.