如何解决如何在 macos 上实现虚拟文件系统?
我已经看到一些应用程序能够在 MacOS 上的 Finder 中将自己表示为外部磁盘。通常,这些是云存储应用程序,例如 PCloud Drive 和 WD Discovery。我想知道他们是怎么做到的。
我意识到云存储可能只是实现了一些远程文件系统协议,例如 Samba 或 AFP。但是我仍然不太明白应用程序如何将文件系统直接挂载到 Finder 中。另外,如果不依赖网络存储,是否有更有效的方法来挂载虚拟文件系统?
解决方法
这是一个相当高层次的问题,所以我会给出一个高层次的答案。我不知道你列出的具体例子是如何实现的,但这应该不难找到。
据我所知,选项如下:
- 从根本上讲,您可以创建 VFS kext。这就是如何在 macOS 中首先实现对 HFS+、APFS、FAT、SMB、AFP 等的支持。 Kernel.framework 中的头文件主要是
<sys/vnode.h>
、<sys/vnode_if.h>
和<vfs/vfs_support.h>
。这给了你最大的力量,但也很困难,安装kexts的用户体验不断恶化。 (除非用户执行一些相当复杂的特技操作,否则它们在 ARM64 Mac 上根本无法加载。) - MacFUSE 可为您完成一些繁重的工作。一些许可问题,它又通过 kext 实现,因此 UX 问题也适用于此。
- 使用
NSFileProvider
。这适用于云风格的虚拟文件系统,但在某种程度上可用于不同但相关的场景。 - 实现网络文件系统服务器,然后使用 API 进行挂载。
- 通过另一种方法(例如通过 DriverKit SCSI 控制器驱动程序或通过 iSCSI 目标)实现托管常规文件系统的块设备。只有当数据源可以合理地表示为块设备时,这才真正有意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。