FSKit

实现一个在用户空间运行的文件系统。

macOS 15.0+

概述

使用 FSKit,你可以通过启用对新型文件系统的访问来扩展 macOS。 你可以通过开发一个 FSKit 模块(FSModule)来实现这一点,该模块以应用扩展的形式提供,在用户空间中运行,并且与 Mac App Store 分发兼容。 FSKit 将你的模块连接到系统现有的框架和工具,例如 Disk Arbitration、NetFS 和 mount(8) 命令。

FSKit 模块

一个 FSKit 模块由两个主要部分组成:

FSKit 框架定义了 FSModule 支持的三个关键文件存储概念:

Volume(卷)

用于文件和文件夹的目录结构。

Resource(资源)

数据源,例如块存储设备或你使用 URL 标识的网络资源。

Container(容器)

一个抽象对象,它使用一个或多个资源来传递一个或多个卷,类似于 APFS 容器。 通常,一个容器只使用一个资源,但某些格式(如 Apple 的集群文件系统 Xsan)使用多个磁盘来存储一个卷的内容。

设计流程

FSKit 提供了两种设计流程,它们在功能和复杂性方面有所不同:

注意

当前版本的 FSKit 仅支持 FSUnaryFileSystem

当你选择设计流程时,请编写一个应用扩展,该扩展遵循 FileSystemExtensionUnaryFileSystemExtension,具体取决于你选择的流程。 这些协议声明了一个 fileSystem 委托对象,你的扩展会创建并返回该对象。 此委托对象会根据需要继承 FSFileSystemFSUnaryFileSystem,并遵循 FSFileSystemOperationsFSUnaryFileSystemOperations 协议。 这些协议定义了一个 loadResource 方法,FSKit 使用该方法使资源可供模块使用。

主题

App extensions(应用扩展)

UnaryFileSystemExtension

一个用于实现最小文件系统作为应用扩展的协议。

File systems(文件系统)

FSUnaryFileSystem

一个用于实现最小文件系统的抽象基类。

FSFileSystemBase

一个包含 FSKit 提供给文件系统实现的功能的协议。

FSFileName

文件的名称,表示为数据缓冲区。

Containers(容器)

FSContainerIdentifier

一种用于标识容器的类型。

FSContainerStatus

一种表示容器状态的类型。

Resources(资源)

FSResource

文件系统用于为卷提供数据的抽象资源。

FSBlockDeviceResource

表示块存储磁盘分区的资源。

Volumes(卷)

FSVolume

用于文件和文件夹的目录结构。

Items(项目)

FSItem

文件层次结构中的不同对象,例如文件、目录、符号链接、套接字等。

Maintenance and management(维护和管理)

FSManageableResourceMaintenanceOperations

文件系统资源维护操作的协议。

Operations(操作)

FSOperationID

操作的唯一标识符。

Tasks(任务)

FSTask

一个类,使文件系统模块能够将日志消息和完成通知传递给客户端。

FSTaskOptions

一个类,将命令选项传递给任务,可以选择提供安全范围的 URL。

Errors and logging(错误和日志记录)

fs_errorForCocoaError(Int32) -> any Error

为给定的 Cocoa 错误代码创建一个错误对象。

fs_errorForMachError(Int32) -> any Error

为给定的 Mach 错误代码创建一个错误对象。

fs_errorForPOSIXError(Int32) -> any Error

为给定的 POSIX 错误代码创建一个错误对象。

FSError

执行 FSKit 操作时遇到的错误。

Code

指示特定 FSKit 错误的代码。

FSKitErrorDomain: String

FSKit 错误的错误域。

FSKit interactions(FSKit 交互)

FSClient

应用和守护进程与 FSKit 交互的接口。

Supporting types(支持类型)

FSBlockmapFlags

描述块映射操作行为的标志。

FSCompleteIOFlags

描述 I/O 完成操作行为的标志。

FSEntityIdentifier

标识容器和卷的基类型。

FSExtentPacker

一种类型,指示内核将磁盘上的空间映射到此文件系统管理的特定文件。

FSExtentType

范围类型的枚举。

FSMatchResult

一种表示探测资源识别和可用性的类型。

FSMetadataRange

一个描述磁盘上连续元数据段的范围。

FSProbeResult

一个表示特定探测结果的对象。