通过C API加载内核扩展?
是否可以通过C API加载内核扩展(通过C API加载内核扩展?,c,macos,kernel-extension,xnu,C,Macos,Kernel Extension,Xnu,是否可以通过C API加载内核扩展(kext),而不是使用system()调用 是的,您需要API。特别是,KextManagerLoadKextWithIdentifier()可能是您要用来加载已安装的kext的函数,而KextManagerLoadKextWithURL()如果您要加载的kext不是在/System/Library/Extensions或/Library/Extensions中,而是在.app包中 CFStringRef km_path = CFStringCreateWit
kext
),而不是使用system()
调用 是的,您需要API。特别是,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);
}