1

是否可以通过C API加载内核扩展( )而不是使用调用?kextsystem()

4

2 回答 2

2

是的,您需要KextManager API。特别是,KextManagerLoadKextWithIdentifier()可能是您想要用来加载已安装的 kext 的函数,而不是KextManagerLoadKextWithURL()如果您想要加载不在 /System/Library/Extensions 或 /Library/Extensions 中但例如在 .app 包中的 kext。

于 2015-04-13T15:19:57.237 回答
0
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);
    }
于 2015-12-10T11:45:07.137 回答