| Предыдущий | Следующий |
| kOSKextReturnCache | kOSKextReturnBootLevel |
kOSKextReturnDeferred
Запрос поставлен в очередь для обработки в пользовательском пространстве
kOSKextReturnDeferred является результатом только уровня ядра. XNU определяет его как операцию, асинхронно переданную в пользовательское пространство. Для OSKextLoadKextWithIdentifier, если kext не найден в ядре, запрос ставится в очередь для kextd; функция возвращает этот статус, а не сообщает, что kext уже загружен.
Следовательно, это не обычный отказ загрузки и не доказательство завершённой загрузки. XNU также указывает, что у этого API нет общего механизма уведомлений или обратных вызовов для таких запросов загрузки, поэтому вызывающей стороне нужны независимые данные о последующем результате.
Как правильно обработать
- Запишите запрошенный идентификатор и время откладывания операции.
- Проверьте диагностику загрузчика пользовательского пространства и фактическое итоговое состояние, а не считайте возврат успешным завершением.
- Не путайте принятый асинхронный запрос с
kOSKextReturnTimeout; этот код означает тайм-аут запроса. - В современных версиях macOS также определите, может ли запрошенное изменение вступить в силу только после обработки AuxKC и перезапуска.
Ссылки
- Apple XNU: OSKextLib.h и OSKextLoadKextWithIdentifier
- Apple Platform Security: kext загружаются через AuxKC
Нужно найти другой код? Найти другой код состояния или ошибки.