Macos 来自已连接用户空间客户端的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

我正在使用Kext,它向一个或多个用户空间客户端提供服务,这些客户端使用iokit服务与它通信

我希望每一个这样的客户机都会引用kext,这样,只要还有可用的客户机,就不可能卸载kext

根据文档,我可以使用
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中,它们都称为服务,可以轻松链接两个这样的服务,不管它们是用户空间进程还是内核模块

蒂纳克斯