Macos 来自已连接用户空间客户端的Kext引用
我正在使用Kext,它向一个或多个用户空间客户端提供服务,这些客户端使用iokit服务与它通信 我希望每一个这样的客户机都会引用kext,这样,只要还有可用的客户机,就不可能卸载kext 根据文档,我可以使用Macos 来自已连接用户空间客户端的Kext引用,macos,dependencies,driver,kernel-extension,xnu,Macos,Dependencies,Driver,Kernel Extension,Xnu,我正在使用Kext,它向一个或多个用户空间客户端提供服务,这些客户端使用iokit服务与它通信 我希望每一个这样的客户机都会引用kext,这样,只要还有可用的客户机,就不可能卸载kext 根据文档,我可以使用ioservicecopen和IOConnectAddRef,但仍然可以使用kextunload卸载驱动程序 kextstat还显示没有对驱动程序进行引用,这些引用是文档中提到的其他驱动程序的引用,但我认为上面的命令可以做到这一点 Index Refs Address
ioservicecopen
和IOConnectAddRef
,但仍然可以使用kextunload
卸载驱动程序
kextstat
还显示没有对驱动程序进行引用,这些引用是文档中提到的其他驱动程序的引用,但我认为上面的命令可以做到这一点
Index Refs Address Size Wired Name (Version) UUID <Linked Against>
1 100 0xffffff7f80a46000 0x9d90 0x9d90 com.apple.kpi.bsd (16.7.0) 410B3B98-9DAB-4590-9086-7C57A5B3099A
2 8 0xffffff7f80fc3000 0x3940 0x3940 com.apple.kpi.dsep (16.7.0) FA744B47-913C-4B5D-8C16-2F8005D85935
3 127 0xffffff7f80a04000 0x21040 0x21040 com.apple.kpi.iokit (16.7.0) 80F2DA67-C67B-4583-9B09-082DB11F69FC
...
170 0 0xffffff7f80a04000 0x21040 0x32120 com.my-driver.nsl (1.0.0) 53390CCD-55F0-315F-BBD7-21645800E4A0
索引引用地址大小有线名称(版本)UUID
1 100 0xFFFF7F80A46000 0x9d90 0x9d90 com.apple.kpi.bsd(16.7.0)410B3B98-9DAB-4590-9086-7C57A5B3099A
2 8 0xFFFF7F80FC3000 0x3940 0x3940 com.apple.kpi.dsep(16.7.0)FA744B47-913C-4B5D-8C16-2F8005D85935
3 127 0xFFFF7F80A04000 0x21040 0x21040 com.apple.kpi.iokit(16.7.0)80F2DA67-C67B-4583-9B09-082DB11F69FC
...
170 0 0xFFFF7F80A04000 0x21040 0x32120 com.my-driver.nsl(1.0.0)53390CCD-55F0-315F-BBD7-21645800E4A0
我应该怎么做才能增加上图中的#参考值
编辑:在apple文档中,可以在info.plist文件中声明kext依赖项
任何KEXT都可以声明它依赖于任何其他KEXT。开发人员在模块属性列表文件的OSBundleLibraries字典中列出这些依赖项
但是,我想用另一种方法,将其他实体的引用标记到我的kext中,这些实体不一定是驱动程序——在windows中,它们都称为服务,可以轻松链接两个这样的服务,不管它们是用户空间进程还是内核模块
蒂纳克斯