Загрузить расширение ядра через C API?

Можно ли загрузить расширение ядра (kext) через C API вместо использования system() вызов?

2 ответа

Решение

Да, вы хотите API KextManager. Особенно, KextManagerLoadKextWithIdentifier() это, вероятно, функция, которую вы хотите использовать для загрузки установленного kext, по сравнению с KextManagerLoadKextWithURL() если вы хотите загрузить kext, который находится не в / System / Library / Extensions или / Library / Extensions, а, например, в пакете.app.

CFStringRef km_path = CFStringCreateWithCString(kCFAllocatorDefault, "/Library/Extensions/KauthORama.kext",
                                                    kCFStringEncodingUTF8);
CFURLRef km_url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, km_path,
                                           kCFURLPOSIXPathStyle, true);
OSReturn status  = KextManagerLoadKextWithURL(km_url, NULL);
if (status == kOSReturnSuccess){
        syslog(LOG_NOTICE, "Loaded!");
    }else{
        syslog(LOG_NOTICE, "Lodaed error: %d", errno);
    }
Другие вопросы по тегам