是否可以通过C API加载内核扩展( )而不是使用调用?kext
system()
问问题
757 次
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 回答