macOS M1 上虚拟文件系统 (VFS) 内核扩展的替代方案

Alternative for Virtual file system (VFS) kernel extension on macOS M1

我们已经为 macOS 上的 虚拟文件系统 (VFS) 开发了 内核扩展 (KEXT) 以将我们的软件与外部集成Adobe InDesign 或 Microsoft Word 等程序。许多客户都在使用我们的软件和 KEXT。

KEXT 似乎已被弃用,并且可能会在未来版本的 macOS 中完全删除,特别是在基于 Apple Silicon 的计算机上。参见例如Apple 在其 security guide 中的公告:

"This is why developers are being strongly encouraged to adopt system extensions before kext support is removed from macOS for future Mac computers with Apple silicon"

因此,我们目前正在研究可能的替代方案。

Apple 建议迁移到 System Extensions 而不是 KEXT。然而,我们发现唯一与 VFS 相关的 API 是实现基于 NSFileProviderReplicatedExtension.

File Provider

不幸的是 NSFileProviderReplicatedExtension 有几个缺陷:

  1. 文件可以在云端或下载。不可能只 download/read 文件的一部分。这对我们来说是一个很大的性能问题,因为我们使用大图像(> 1GB)。我们集成的程序通常只读取图像的一部分,例如嵌入式预览。 API 不提供访问文件的选定块(随机访问文件)的方法。
  2. 文件提供者通过enumerators了解文件系统内容。因此,必须首先枚举(列出)文件夹内的所有内容。否则无法访问。但是,我们不能枚举我们的 VFS。我们 VFS 的大部分内容都是完全动态的。它仅在客户端第一次访问时存在。此类动态内容还包括动态参数,例如客户端的区域设置或放置图像的框的大小。由于我们事先不知道这些参数,所以我们无法提前枚举VFS的内容。

这意味着,处于当前状态的 NSFileProviderReplicatedExtension 不能替代“真正的”VFS,因此我们不能将其用作当前 VFS KEXT 的替代品。

我的问题:

  1. Apple 是否也会在未来版本的(基于 Apple Silicon/M1 的)操作系统中允许内核扩展?或者至少有一个明确的截止日期?
  2. 如果不是,Apple 官方建议的基于 KEXT 的 VFS 解决方案的替代品是什么?
  3. 是否会改进 NSFileProviderReplicatedExtension 的 API 使其表现得像“真实”文件系统,以便上述缺陷不再是问题?

非常感谢您的任何回答或评论!

此致,

迈克尔

Will Apple allow kernel extensions also in future versions of (Apple Silicon/M1 based) operating systems? Or is there at least a clear deadline?

Apple 并没有真正给出时间表,他们偶尔也会违背支持承诺。

但是,这种硬 API 弃用和删除通常作为主要版本的一部分完成,因此您通常会在一年的 WWDC 上收到弃用通知,用户可能会在以下时间开始看到弃用通知OS 版本的 .0 最早发布,有时是 .3 或 .4 修订版。然后你通常会在 next WWDC 上被告知 API 在即将发布的版本中被阻止,所以到那时你应该已经实现了替换。

If not, what is Apple's officially suggested replacement for KEXT based VFS solutions?

据我所知,目前只有NSFileProviderReplicatedExtension

Will the API of an NSFileProviderReplicatedExtension be improved to behave like a "real" file system so that above mentioned flaws will no longer be an issue?

除了通过 beta SDK,Apple 通常不会预先宣布未来 APIs。

我的建议:

  • 您使用反馈助手遇到的每个文件提供程序缺点的文件问题。 (雷达)
  • 向 Apple 提交“增强请求”反馈问题,以获取“真实”文件系统 API 替代 VFS KPI。
  • 如果您的 vfs kext 对您的 business/product 至关重要,我建议 另外 通过 TSI 询问 Apple 的 DTS 他们针对您的情况推荐什么。参考提交问题的反馈 ID,否则他们会建议您提交问题。