小编RHK*_*RHK的帖子

从KEXT到Daemon进行通信的最佳方式,并阻止从守护进程返回结果

在KEXT中,我通过vnode或文件范围监听器监听文件关闭.对于某些(极少数)文件,我需要将文件路径发送到我的系统守护程序,该守护程序执行一些处理(这必须在守护程序中发生)并将结果返回给KEXT.需要阻止文件关闭调用,直到我从守护程序获得响应.根据结果​​我需要在close调用中进行一些操作并成功返回close调用.论坛上有很多关于KEXT通信相关主题的讨论.但它们并不具有决定性,而且看起来很老(2002年左右).此要求可以由FtlSendMessage(...)Win32 API 处理.我在Mac上寻找相同的东西

以下是我所看到的并希望总结我的理解:

  1. Mach消息:使用具有排队机制的发送器和应答端口提供非常好的双向通信方式.但是,马赫消息的API(例如mach_msg,mach_port_allocate,bootstrap_look_up)并不显得关键绩效指标.mach_msg_send_from_kernel可以使用mach API ,但仅此一点对双向通信没有帮助.我的理解是对的吗?
  2. IOUserClient:这似乎更多地与从用户空间到KEXT的通信,然后从KEXT进行一些回调.我没有找到一种方法来启动从KEXT到守护进程的通信,然后等待来自守护进程的结果.我错过了什么吗?
  3. 套接字:这可能是最后一个选项,因为我必须实现从KEXT到守护进程的整个双向通信通道.
  4. ioctl/sysctl:我对他们了解不多.根据我的阅读,它不推荐使用,特别是对于双向通信
  5. RPC-Mig:我再也不太了解它们.从我所看到的看起来很复杂.不确定这是否是推荐方式.
  6. KUNCUserNotification:这似乎只是从KEXT向用户提供通知.它不符合我的要求.

支持的平台是(10.5以后).所以看看这个要求,有人可以建议并提供一些关于这个主题的指示吗?

提前致谢.

macos iokit kernel-extension launch-daemon mach

10
推荐指数
1
解决办法
3112
查看次数

标签 统计

iokit ×1

kernel-extension ×1

launch-daemon ×1

mach ×1

macos ×1