Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过C API加载内核扩展?_C_Macos_Kernel Extension_Xnu - Fatal编程技术网

通过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

是否可以通过C API加载内核扩展(
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);
    }