fuchsia.io

添加时间:7

协议

AdvisoryLocking

fuchsia.io/locking.fidl 中定义

Advisory Locking Protocol。

此协议旨在组成 |File|协议 为建议锁定提供支持。

建议锁定只是建议性锁定。它们不会阻止实际读取或 对文件执行的写入操作,无论是通过 还是通过其他连接进行连接。

这些基元旨在支持 flock() 和 fcntl(), 具体来说是 F_SETLK、F_SETLKW 和 F_GETLK, 在 Fuchsia 上运行的应用对其他操作系统有一定的预期。

AdvisoryLock

获取底层文件的咨询锁。

锁定状态将持续到此连接关闭或 此方法是通过 |AdvisoryLockType.UNLOCK| 调用的解锁 。

建议锁定只是建议性锁定。它们不会阻止实际读取或 对文件执行的写入操作,无论是通过 还是通过其他连接进行连接。

此方法需要以下权限:

错误

  • ZX_ERR_BAD_STATE 无法获取指定的锁定类型。对于 例如,另一个连接持有的锁类型可能存在冲突。
  • ZX_ERR_NOT_SUPPORTED此文件不支持建议锁定。
  • ZX_ERR_ACCESS_DENIED 此连接权限不足 来获取指定类型的锁。

请求

名称类型
request AdvisoryLockRequest

响应

名称类型
payload AdvisoryLocking_AdvisoryLock_Result

目录

fuchsia.io/directory.fidl 中定义

AdvisoryLock

获取底层文件的咨询锁。

锁定状态将持续到此连接关闭或 此方法是通过 |AdvisoryLockType.UNLOCK| 调用的解锁 。

建议锁定只是建议性锁定。它们不会阻止实际读取或 对文件执行的写入操作,无论是通过 还是通过其他连接进行连接。

此方法需要以下权限:

错误

  • ZX_ERR_BAD_STATE 无法获取指定的锁定类型。对于 例如,另一个连接持有的锁类型可能存在冲突。
  • ZX_ERR_NOT_SUPPORTED此文件不支持建议锁定。
  • ZX_ERR_ACCESS_DENIED 此连接权限不足 来获取指定类型的锁。

请求

名称类型
request AdvisoryLockRequest

响应

名称类型
payload AdvisoryLocking_AdvisoryLock_Result

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

创建一个符号链接。

name 是要为所创建的符号链接指定的名称。 target 是符号链接的目标,它在服务器上没有意义。服务器 除了服务器选择的最大长度之外,不会对 target 执行任何验证。 connection 是通道的可选服务器端,它将使用 Symlink 协议 成功创建的节点上。

  • Rights.MODIFY_DIRECTORY

  • 如果 name 已存在,则会发生 ZX_ERR_ALREADY_EXISTS 错误。

  • 如果 target 超过符号链接的服务器长度限制,则会发生 ZX_ERR_BAD_PATH 错误。

  • 如果 name 不是有效的名称,则会显示错误 ZX_ERR_INVALID_ARGS

  • 如果服务器不支持创建符号链接,则会发生 ZX_ERR_NOT_SUPPORTED 错误。

添加时间:18
名称类型
name Name
target SymlinkTarget
connection server_end<Symlink>?
名称类型
payload Directory2_CreateSymlink_Result

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

GetToken

获取目录的令牌,此令牌可用于日后识别对目录的访问 。只要连接请求令牌,该令牌就会一直有效 保持打开状态。

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

<空>

响应

名称类型
s zx/Status
token handle<handle>?

在用 dst 表示的目录内创建指向名为 src 的对象的链接 令牌。

src 必须是已解析对象名称。包含“/”会 返回 ZX_ERR_INVALID_ARGS

dst 必须是已解析对象名称。包含“/”会 返回 ZX_ERR_INVALID_ARGS

使用此方法需要以下权限:OpenFlags.RIGHT_WRITABLEOpenFlags.RIGHT_READABLE,否则返回 ZX_ERR_BAD_HANDLE

如果同时重命名或解除关联来源,这将会是原子性的,例如如果 有两个执行者同时操作,其中一个执行者执行了重命名操作,这会影响 另一个是此目录下的来源,而另一个则添加了链接, 以原子方式按未指定的顺序执行操作。

名称类型
src string[255]
dst_parent_token handle<handle>
dst string[255]
名称类型
s zx/Status

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

打开

打开相对于此目录对象的新对象。

path”可以包含多个以“/”分隔的细分字符,且不得 empty;即 ""路径无效。结尾的斜杠表示 OpenFlags.DIRECTORY。组件 不得为空(即“foo//bar”无效)。“..”路径的任何位置都不允许使用。“.” 只有在路径为“.”时才允许,否则不允许使用。以“/”开头允许(并且 与不存在时的处理方式相同,即“/foo/bar”和“foo/bar”相同)。

如果发送的标志未知值,则连接应关闭。

flags 中提供的 OpenFlags.RIGHT_* 个标记将限制 object 频道,它将与打开的实体相关联。

权限从未增加。在目录中打开嵌套实体时,您可能只有 请求的权限与目录连接已拥有的权限相同,或仅请求部分权限。 用户超出这些权限后,系统会在 OnOpen 事件(如果适用),并且 object 连接已关闭。

系统会忽略 mode

请求

名称类型
flags OpenFlags
mode ModeType
path string[4095]
object server_end<Node>

Open2

打开或创建与此目录节点相关的新节点。

此方法需要对当前连接具备以下权限:

错误会以标注在 object_request 通道上呈现。

  • 如果请求的权限超出允许的权限,则会发生 ZX_ERR_ACCESS_DENIED 错误。
  • 如果 path 无效,则会发生 ZX_ERR_BAD_PATH 错误。
移除:23

请求

名称类型
path Path
protocols ConnectionProtocols
object_request handle<channel>

Open3

打开(或创建)相对于此目录的节点。系统会通过 墓碑已发送至 object 频道。

错误:

  • 如果 path 无效,则为 ZX_ERR_BAD_PATH
  • 请参阅标志了解可能会根据 flags 传达的其他错误

请求

名称类型
path Path
flags Flags
options Options
object handle<channel>

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

ReadDirents

将大小可变的 dirent 集合读取到缓冲区中。 目录中的 dirent 数可能非常庞大: 对一个文件多次调用 read,目录会有一个跳转 偏移量,在对 ReadDirents 的后续调用中会更新。 每次调用 ReadDirents 都只会返回整个目录结构, 它们不会在 ReadDirent 调用之间拆分跳转时 偏移到末尾,dirents 将为空。

这些 dirent 的形式如下:

struct dirent {
  // Describes the inode of the entry.
  uint64 ino;
  // Describes the length of the dirent name in bytes.
  uint8 size;
  // Describes the type of the entry. Aligned with the
  // POSIX d_type values. Use `DirentType` constants.
  uint8 type;
  // Unterminated name of entry.
  char name[0];
}

此方法不需要任何权限,因为用户始终可以探测 从而避免在文件创建过程中触发名称冲突

请求

名称类型
max_bytes uint64

响应

名称类型
s zx/Status
dirents vector<uint8>[8192]

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重命名

将名为 src 的节点重命名为名称 dst(位于表示的目录中) 上传者:dst_parent_token

srcdst 必须是有效的节点名称。 如需了解有效名称的构成要素,请参阅名称

此方法需要对当前连接和该连接都具备以下权限 由 dst_parent_token 标识:

为避免权利升级,必须满足以下要求。

如果源目录和目标目录不同,则源目录还必须具有 文件支持的最大功能集,通常是 Rights.READ_BYTESRights.WRITE_BYTESRights.GET_ATTRIBUTESRights.UPDATE_ATTRIBUTES。某些文件系统可能也支持 Rights.EXECUTE

如果 src 引用的是目录,并且与目标目录不同,则源目录 目录还必须具有 Rights.CONNECTRights.TRAVERSE 权限。

  • 如果 srcdst 无效,则会发生 ZX_ERR_INVALID_ARGS 错误。
  • 错误 ZX_ERR_ACCESS_DENIED,表示权限不足。

请求

名称类型
src Name
dst_parent_token Token
dst Name

响应

名称类型
payload Directory2_Rename_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

快退

重置目录跳转偏移量。

与 ReadDirents 类似,此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

从该目录的条目列表中移除子节点。

注意:这无法保证底层对象会被销毁。 尽管该链接会从包含目录的目录中删除, 具有多个引用的对象(例如仍处于打开状态的文件) 直到所有引用都关闭后才会销毁。

  • 如果连接未成功,则会发生 ZX_ERR_ACCESS_DENIED 错误 Rights.WRITE_BYTES
  • 如果底层文件系统不执行上述操作,则会发生 ZX_ERR_NOT_SUPPORTED 错误 支持写作。
  • 如果 name 无效,则会发生 ZX_ERR_BAD_PATH 错误。
  • 如果 name 引用非空目录,则会发生 ZX_ERR_NOT_EMPTY 错误。
  • 如果 name 引用了装载点,则会发生 ZX_ERR_UNAVAILABLE 错误; 包含远程频道
  • 错误ZX_ERR_NOT_DIR如果选项请求目录,但 发现了除目录以外的内容。

由于特定于文件系统的原因,也可能会返回其他错误。

此方法需要以下权限:

名称类型
name Name
options UnlinkOptions
名称类型
payload Directory2_Unlink_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

观看

监视目录,在 Watcher 请求渠道。

选项必须为零;资源。

与 ReadDirents 类似,此方法不需要任何权限。

请求

名称类型
mask WatchMask
options uint32
watcher server_end<DirectoryWatcher>

响应

名称类型
s zx/Status

Directory1

fuchsia.io/directory.fidl 中定义

目录定义了能够容纳其他对象的节点。

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

GetToken

获取目录的令牌,此令牌可用于日后识别对目录的访问 。只要连接请求令牌,该令牌就会一直有效 保持打开状态。

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

<空>

响应

名称类型
s zx/Status
token handle<handle>?

在用 dst 表示的目录内创建指向名为 src 的对象的链接 令牌。

src 必须是已解析对象名称。包含“/”会 返回 ZX_ERR_INVALID_ARGS

dst 必须是已解析对象名称。包含“/”会 返回 ZX_ERR_INVALID_ARGS

使用此方法需要以下权限:OpenFlags.RIGHT_WRITABLEOpenFlags.RIGHT_READABLE,否则返回 ZX_ERR_BAD_HANDLE

如果同时重命名或解除关联来源,这将会是原子性的,例如如果 有两个执行者同时操作,其中一个执行者执行了重命名操作,这会影响 另一个是此目录下的来源,而另一个则添加了链接, 以原子方式按未指定的顺序执行操作。

名称类型
src string[255]
dst_parent_token handle<handle>
dst string[255]
名称类型
s zx/Status

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

打开

打开相对于此目录对象的新对象。

path”可以包含多个以“/”分隔的细分字符,且不得 empty;即 ""路径无效。结尾的斜杠表示 OpenFlags.DIRECTORY。组件 不得为空(即“foo//bar”无效)。“..”路径的任何位置都不允许使用。“.” 只有在路径为“.”时才允许,否则不允许使用。以“/”开头允许(并且 与不存在时的处理方式相同,即“/foo/bar”和“foo/bar”相同)。

如果发送的标志未知值,则连接应关闭。

flags 中提供的 OpenFlags.RIGHT_* 个标记将限制 object 频道,它将与打开的实体相关联。

权限从未增加。在目录中打开嵌套实体时,您可能只有 请求的权限与目录连接已拥有的权限相同,或仅请求部分权限。 用户超出这些权限后,系统会在 OnOpen 事件(如果适用),并且 object 连接已关闭。

系统会忽略 mode

请求

名称类型
flags OpenFlags
mode ModeType
path string[4095]
object server_end<Node>

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

ReadDirents

将大小可变的 dirent 集合读取到缓冲区中。 目录中的 dirent 数可能非常庞大: 对一个文件多次调用 read,目录会有一个跳转 偏移量,在对 ReadDirents 的后续调用中会更新。 每次调用 ReadDirents 都只会返回整个目录结构, 它们不会在 ReadDirent 调用之间拆分跳转时 偏移到末尾,dirents 将为空。

这些 dirent 的形式如下:

struct dirent {
  // Describes the inode of the entry.
  uint64 ino;
  // Describes the length of the dirent name in bytes.
  uint8 size;
  // Describes the type of the entry. Aligned with the
  // POSIX d_type values. Use `DirentType` constants.
  uint8 type;
  // Unterminated name of entry.
  char name[0];
}

此方法不需要任何权限,因为用户始终可以探测 从而避免在文件创建过程中触发名称冲突

请求

名称类型
max_bytes uint64

响应

名称类型
s zx/Status
dirents vector<uint8>[8192]

快退

重置目录跳转偏移量。

与 ReadDirents 类似,此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

观看

监视目录,在 Watcher 请求渠道。

选项必须为零;资源。

与 ReadDirents 类似,此方法不需要任何权限。

请求

名称类型
mask WatchMask
options uint32
watcher server_end<DirectoryWatcher>

响应

名称类型
s zx/Status

Directory2

fuchsia.io/directory2.fidl 中定义

能够包含其他节点的 Node2

AdvisoryLock

获取底层文件的咨询锁。

锁定状态将持续到此连接关闭或 此方法是通过 |AdvisoryLockType.UNLOCK| 调用的解锁 。

建议锁定只是建议性锁定。它们不会阻止实际读取或 对文件执行的写入操作,无论是通过 还是通过其他连接进行连接。

此方法需要以下权限:

错误

  • ZX_ERR_BAD_STATE 无法获取指定的锁定类型。对于 例如,另一个连接持有的锁类型可能存在冲突。
  • ZX_ERR_NOT_SUPPORTED此文件不支持建议锁定。
  • ZX_ERR_ACCESS_DENIED 此连接权限不足 来获取指定类型的锁。

请求

名称类型
request AdvisoryLockRequest

响应

名称类型
payload AdvisoryLocking_AdvisoryLock_Result

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

创建一个符号链接。

name 是要为所创建的符号链接指定的名称。 target 是符号链接的目标,它在服务器上没有意义。服务器 除了服务器选择的最大长度之外,不会对 target 执行任何验证。 connection 是通道的可选服务器端,它将使用 Symlink 协议 成功创建的节点上。

  • Rights.MODIFY_DIRECTORY

  • 如果 name 已存在,则会发生 ZX_ERR_ALREADY_EXISTS 错误。

  • 如果 target 超过符号链接的服务器长度限制,则会发生 ZX_ERR_BAD_PATH 错误。

  • 如果 name 不是有效的名称,则会显示错误 ZX_ERR_INVALID_ARGS

  • 如果服务器不支持创建符号链接,则会发生 ZX_ERR_NOT_SUPPORTED 错误。

添加时间:18
名称类型
name Name
target SymlinkTarget
connection server_end<Symlink>?
名称类型
payload Directory2_CreateSymlink_Result

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

Open2

打开或创建与此目录节点相关的新节点。

此方法需要对当前连接具备以下权限:

错误会以标注在 object_request 通道上呈现。

  • 如果请求的权限超出允许的权限,则会发生 ZX_ERR_ACCESS_DENIED 错误。
  • 如果 path 无效,则会发生 ZX_ERR_BAD_PATH 错误。
移除:23

请求

名称类型
path Path
protocols ConnectionProtocols
object_request handle<channel>

Open3

打开(或创建)相对于此目录的节点。系统会通过 墓碑已发送至 object 频道。

错误:

  • 如果 path 无效,则为 ZX_ERR_BAD_PATH
  • 请参阅标志了解可能会根据 flags 传达的其他错误

请求

名称类型
path Path
flags Flags
options Options
object handle<channel>

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重命名

将名为 src 的节点重命名为名称 dst(位于表示的目录中) 上传者:dst_parent_token

srcdst 必须是有效的节点名称。 如需了解有效名称的构成要素,请参阅名称

此方法需要对当前连接和该连接都具备以下权限 由 dst_parent_token 标识:

为避免权利升级,必须满足以下要求。

如果源目录和目标目录不同,则源目录还必须具有 文件支持的最大功能集,通常是 Rights.READ_BYTESRights.WRITE_BYTESRights.GET_ATTRIBUTESRights.UPDATE_ATTRIBUTES。某些文件系统可能也支持 Rights.EXECUTE

如果 src 引用的是目录,并且与目标目录不同,则源目录 目录还必须具有 Rights.CONNECTRights.TRAVERSE 权限。

  • 如果 srcdst 无效,则会发生 ZX_ERR_INVALID_ARGS 错误。
  • 错误 ZX_ERR_ACCESS_DENIED,表示权限不足。

请求

名称类型
src Name
dst_parent_token Token
dst Name

响应

名称类型
payload Directory2_Rename_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

从该目录的条目列表中移除子节点。

注意:这无法保证底层对象会被销毁。 尽管该链接会从包含目录的目录中删除, 具有多个引用的对象(例如仍处于打开状态的文件) 直到所有引用都关闭后才会销毁。

  • 如果连接未成功,则会发生 ZX_ERR_ACCESS_DENIED 错误 Rights.WRITE_BYTES
  • 如果底层文件系统不执行上述操作,则会发生 ZX_ERR_NOT_SUPPORTED 错误 支持写作。
  • 如果 name 无效,则会发生 ZX_ERR_BAD_PATH 错误。
  • 如果 name 引用非空目录,则会发生 ZX_ERR_NOT_EMPTY 错误。
  • 如果 name 引用了装载点,则会发生 ZX_ERR_UNAVAILABLE 错误; 包含远程频道
  • 错误ZX_ERR_NOT_DIR如果选项请求目录,但 发现了除目录以外的内容。

由于特定于文件系统的原因,也可能会返回其他错误。

此方法需要以下权限:

名称类型
name Name
options UnlinkOptions
名称类型
payload Directory2_Unlink_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

DirectoryWatcher

fuchsia.io/directory.fidl 中定义

DirectoryWatcher 从文件系统服务器传输消息 文件系统中发生的事件。客户端可以注册 新观察者使用 Directory.Watch 方法,通过该方法 过滤他们希望接收哪些事件的通知。

DirectoryWatcher 会发送以下形式的消息:

struct {
  uint8 event;
  uint8 len;
  char name[];
};

其中,名称不是以 null 结尾。该名称是 事件所引用条目的路径。如果存在以下情况,则此处为空 该事件未引用特定条目(例如,对于 IDLE 事件)。

ExtendedAttributeIterator

fuchsia.io/node2.fidl 中定义

添加时间:18

GetNext

获取扩展属性名称的下一个文本块。如果这是最后一次 最后将是 true,并且该频道在经过 调用。

请求

<空>

响应

名称类型
payload ExtendedAttributeIterator_GetNext_Result

文件

fuchsia.io/file2.fidl 中定义

包含一系列确定长度的字节的 Node

注意:克隆的连接不与其来源共享其跳转偏移量 连接。

AdvisoryLock

获取底层文件的咨询锁。

锁定状态将持续到此连接关闭或 此方法是通过 |AdvisoryLockType.UNLOCK| 调用的解锁 。

建议锁定只是建议性锁定。它们不会阻止实际读取或 对文件执行的写入操作,无论是通过 还是通过其他连接进行连接。

此方法需要以下权限:

错误

  • ZX_ERR_BAD_STATE 无法获取指定的锁定类型。对于 例如,另一个连接持有的锁类型可能存在冲突。
  • ZX_ERR_NOT_SUPPORTED此文件不支持建议锁定。
  • ZX_ERR_ACCESS_DENIED 此连接权限不足 来获取指定类型的锁。

请求

名称类型
request AdvisoryLockRequest

响应

名称类型
payload AdvisoryLocking_AdvisoryLock_Result

分配

为此文件预先分配磁盘空间。

添加时间:HEAD

请求

名称类型
offset uint64
length uint64
mode AllocateMode

响应

名称类型
payload File_Allocate_Result

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

描述

请求

<空>

响应

名称类型
payload FileInfo

EnableVerity

(永久)启用对文件的验证,这涉及为 文件。在构建 Merkle 树之前强制刷新,以确保缓存的数据 已捕获。系统将根据计算的 Merkle 树验证未来的读取操作,并将 已被拒绝。此方法可能需要一段时间才能完成,具体取决于文件的大小。 可以通过关闭发出此方法的连接来取消此方法。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。 如果文件系统不支持 verity,则返回 ZX_ERR_NOT_SUPPORTED。 如果文件已启用 fsverity,则返回 ZX_ERR_ALREADY_EXISTS。 它会返回任何可能因读取文件或刷新文件而导致的错误, 例如 ZX_ERR_IO

添加时间:HEAD

请求

名称类型
options VerificationOptions

响应

名称类型
payload File_EnableVerity_Result

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetBackingMemory

获取表示此文件的 zx.Handle:VMO(如果有), 访问您请求的访问权限

实现由 VMO 支持的文件不需要实现,因此 此请求可能会失败。此外,实现可能仅支持 标志的特定子集。客户端应做好后备准备 行为

如果客户端既未指定 PRIVATE_CLONE,也未指定 SHARED_BUFFER,则 实现可以自由选择返回的 VMO 的语义。

  • flags 请求 VmoFlags,以指示所需的访问模式。
  • error a zx.Status 值,该值表示失败。

此方法需要以下权限:

请求

名称类型
flags VmoFlags

响应

名称类型
payload File_GetBackingMemory_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

LinkInto

在由 表示的目录中创建指向此对象的链接,其名称为 dst dst_parent_token

dst 必须是已解析对象名称。包含“/”会返回 ZX_ERR_INVALID_ARGS

对于该对象,此方法需要文件系统支持的最大权限集。 对于文件,通常为 Rights.READ_BYTESRights.WRITE_BYTESRights.GET_ATTRIBUTESRights.UPDATE_ATTRIBUTES。有些文件系统可能 支持 Rights.EXECUTE 权限。权限不足会导致 ZX_ERR_ACCESS_DENIED

如果此对象没有链接,它将失败并显示 ZX_ERR_NOT_FOUND

此方法与 Directory::Link 方法不具有相同的原子性, 这意味着,依次调用 OpenLinkInto 并不等同于 Directory::Link 因为 LinkInto 不会阻止来源被重命名或解除关联。

请求

名称类型
dst_parent_token Token
dst Name

响应

名称类型
payload Linkable_LinkInto_Result

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

已读

读取到“count”寻道偏移量处的字节。 寻道偏移量向前移动读取的字节数。

不变量

  • 返回的 data.length 绝不会大于 count
  • 如果 data.length 小于 count,则表示跳转偏移量 到达文件末尾。
  • 如果 data.length 为零,count 不为零,则表示 跳转偏移量已到达或超出文件末尾,且任何数据都不能 以供读取。
  • 如果 count 为零,服务器应执行所有检查,以确保 读取权限,而不实际读取任何内容,并将 data 矢量。

此方法需要 Rights.READ_BYTES 权限。

如果 count 大于 MAX_TRANSFER_SIZE,则返回 ZX_ERR_OUT_OF_RANGE

请求

名称类型
count uint64

响应

名称类型
payload Readable_Read_Result

ReadAt

读取到“count”指定偏移量处的字节。 不影响跳转偏移量。

不变量

  • 返回的 data.length 绝不会大于 count
  • 如果 data.length 小于 count,则表示 ReadAt 已达 文件末尾。
  • 如果 data.length 为零而 count 不为零,则表示 offset 位于或超过文件末尾,且无法读取任何数据。
  • 如果 count 为零,服务器应执行所有检查,以确保 在不实际读取任何内容的情况下进行读取访问, data 矢量。

此方法需要 Rights.READ_BYTES 权限。

如果 count 大于 MAX_TRANSFER_SIZE,则返回 ZX_ERR_OUT_OF_RANGE

请求

名称类型
count uint64
offset uint64

响应

名称类型
payload File_ReadAt_Result

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

调整大小

将文件缩小或扩大到“length”字节。

如果此操作缩减了文件大小,额外的尾随数据 已舍弃。 如果此操作增大文件大小,扩展区域会显示 就像设为 0 一样。

此方法需要 Rights.WRITE_BYTES 右方。

请求

名称类型
length uint64

响应

名称类型
payload File_Resize_Result

进度

移动下一次调用 ReadWrite 时的偏移量 将发生什么。跳转偏移量特定于每个文件连接。

  • 请求 origin 作为 offset 所依据的参考点。
  • 请求 offset 要定位的字节数。
  • 响应 offset_from_start 调整后的跳转偏移量(从头开始) 文件副本。

此方法不需要任何权限。

请求

名称类型
origin SeekOrigin
offset int64

响应

名称类型
payload File_Seek_Result

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

写入

在跳转偏移量处写入数据。 寻道偏移量向前移动写入的字节数。 如果文件处于附加模式,则首先将跳转偏移量设置为末尾 然后执行写入操作,完成一个原子步骤。

如果定位偏移量加上 data.length 超出,则文件大小可能会增加 当前文件末尾。

  • 请求 data 字节缓冲区以写入文件。
  • 响应 actual_count 表示写入的字节数。

不变量

  • 返回的 actual_count 绝不会大于 data.length
  • 如果服务器因某些原因而无法写入所有数据,不够 空格,actual_count 可以小于 data.length。如果没有字节 则会返回错误。
  • 如果 data.length 为零,则服务器应执行所有检查 确保在不更改文件的情况下拥有写入权限,并返回 零字节的成功写入。如果存在以下情况,定位偏移量仍会更新: 。

此方法需要 Rights.WRITE_BYTES 权限。

请求

名称类型
data Transfer

响应

名称类型
payload Writable_Write_Result

WriteAt

以指定的偏移量写入数据。 不影响跳转偏移量。

如果 offset 加上 data.length 超出 当前文件末尾。

  • 请求 data 字节缓冲区以写入文件。
  • 请求 offset:从文件开头到开始写入的偏移量。
  • 响应 actual_count 表示写入的字节数。

不变量

  • 返回的 actual_count 绝不会大于 data.length
  • 如果服务器因某些原因而无法写入所有数据,不够 空格,actual_count 可以小于 data.length。如果没有字节 则会返回错误。
  • 如果 data.length 为零,则服务器应执行所有检查 确保在不更改文件的情况下写入权限,并将返回一个 零字节的成功写入。

此方法需要 Rights.WRITE_BYTES 右方。

请求

名称类型
data Transfer
offset uint64

响应

名称类型
payload File_WriteAt_Result

可关联

fuchsia.io/node2.fidl 中定义

添加时间:18

LinkInto

在由 表示的目录中创建指向此对象的链接,其名称为 dst dst_parent_token

dst 必须是已解析对象名称。包含“/”会返回 ZX_ERR_INVALID_ARGS

对于该对象,此方法需要文件系统支持的最大权限集。 对于文件,通常为 Rights.READ_BYTESRights.WRITE_BYTESRights.GET_ATTRIBUTESRights.UPDATE_ATTRIBUTES。有些文件系统可能 支持 Rights.EXECUTE 权限。权限不足会导致 ZX_ERR_ACCESS_DENIED

如果此对象没有链接,它将失败并显示 ZX_ERR_NOT_FOUND

此方法与 Directory::Link 方法不具有相同的原子性, 这意味着,依次调用 OpenLinkInto 并不等同于 Directory::Link 因为 LinkInto 不会阻止来源被重命名或解除关联。

请求

名称类型
dst_parent_token Token
dst Name

响应

名称类型
payload Linkable_LinkInto_Result

节点

fuchsia.io/node.fidl 中定义

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

Node1

fuchsia.io/node.fidl 中定义

Node 定义了可在文件系统中访问的实体的最小接口。

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

Node2

fuchsia.io/node2.fidl 中定义

Node 定义了可访问的实体的最小协议 存储数据

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

可打开

fuchsia.io/directory.fidl 中定义

打开

打开相对于此目录对象的新对象。

path”可以包含多个以“/”分隔的细分字符,且不得 empty;即 ""路径无效。结尾的斜杠表示 OpenFlags.DIRECTORY。组件 不得为空(即“foo//bar”无效)。“..”路径的任何位置都不允许使用。“.” 只有在路径为“.”时才允许,否则不允许使用。以“/”开头允许(并且 与不存在时的处理方式相同,即“/foo/bar”和“foo/bar”相同)。

如果发送的标志未知值,则连接应关闭。

flags 中提供的 OpenFlags.RIGHT_* 个标记将限制 object 频道,它将与打开的实体相关联。

权限从未增加。在目录中打开嵌套实体时,您可能只有 请求的权限与目录连接已拥有的权限相同,或仅请求部分权限。 用户超出这些权限后,系统会在 OnOpen 事件(如果适用),并且 object 连接已关闭。

系统会忽略 mode

请求

名称类型
flags OpenFlags
mode ModeType
path string[4095]
object server_end<Node>

可读性

fuchsia.io/file2.fidl 中定义

已读

读取到“count”寻道偏移量处的字节。 寻道偏移量向前移动读取的字节数。

不变量

  • 返回的 data.length 绝不会大于 count
  • 如果 data.length 小于 count,则表示跳转偏移量 到达文件末尾。
  • 如果 data.length 为零,count 不为零,则表示 跳转偏移量已到达或超出文件末尾,且任何数据都不能 以供读取。
  • 如果 count 为零,服务器应执行所有检查,以确保 读取权限,而不实际读取任何内容,并将 data 矢量。

此方法需要 Rights.READ_BYTES 权限。

如果 count 大于 MAX_TRANSFER_SIZE,则返回 ZX_ERR_OUT_OF_RANGE

请求

名称类型
count uint64

响应

名称类型
payload Readable_Read_Result

fuchsia.io/symlink.fidl 中定义

包含符号链接的 ['Node']。

添加时间:18

克隆

创建与同一远程对象的另一个连接。

flags 可以是以下任何一项:

  • OpenFlags.RIGHT_*
  • OpenFlags.APPEND
  • OpenFlags.DESCRIBE
  • OpenFlags.CLONE_SAME_RIGHTS

所有其他标记均会被忽略。

flags 中的 OpenFlags.RIGHT_* 位会请求对所得结果的相应权限 克隆对象。 克隆对象拥有的权限必须不高于原始对象,否则 返回 ZX_ERR_ACCESS_DENIED。 或者,您也可以传递 OpenFlags.CLONE_SAME_RIGHTS 以继承来源连接的权限。 将任何 OpenFlags.RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS

请求

名称类型
flags OpenFlags
object server_end<Node>

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

描述

请求

<空>

响应

名称类型
payload Symlink_Describe_Result

GetAttr

获取节点相关信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
attributes NodeAttributes

GetAttributes

获取节点相关信息。

节点的属性应该是稳定的, 访问它所使用的特定协议。

如果某个属性不适用或不受支持, 文件系统应保留相应的字段。

  • query:用于指定要提取的属性的位掩码。服务器 不应返回超出必要数量的值。
  • attributes:返回的属性。

此方法需要 Rights.GET_ATTRIBUTES 右边。

请求

名称类型
query NodeAttributesQuery

响应

名称类型
payload Node2_GetAttributes_Result

GetConnectionInfo

获取关于连接的信息。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload ConnectionInfo

GetExtendedAttribute

获取与此节点的指定属性 name 相关联的值。

属性名称的长度上限为 MAX_ATTRIBUTE_NAME。否 特定的结构。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_GetExtendedAttribute_Result

GetFlags

获取 Directory.Open 权限和用于访问此文件的标志。

此方法不需要任何权限。

请求

<空>

响应

名称类型
s zx/Status
flags OpenFlags

LinkInto

在由 表示的目录中创建指向此对象的链接,其名称为 dst dst_parent_token

dst 必须是已解析对象名称。包含“/”会返回 ZX_ERR_INVALID_ARGS

对于该对象,此方法需要文件系统支持的最大权限集。 对于文件,通常为 Rights.READ_BYTESRights.WRITE_BYTESRights.GET_ATTRIBUTESRights.UPDATE_ATTRIBUTES。有些文件系统可能 支持 Rights.EXECUTE 权限。权限不足会导致 ZX_ERR_ACCESS_DENIED

如果此对象没有链接,它将失败并显示 ZX_ERR_NOT_FOUND

此方法与 Directory::Link 方法不具有相同的原子性, 这意味着,依次调用 OpenLinkInto 并不等同于 Directory::Link 因为 LinkInto 不会阻止来源被重命名或解除关联。

请求

名称类型
dst_parent_token Token
dst Name

响应

名称类型
payload Linkable_LinkInto_Result

ListExtendedAttributes

针对关联的所有扩展属性名称创建迭代器 具有此节点。如果出现错误,则会在 迭代器请求渠道,然后该渠道就会关闭。

GetExtendedAttributes 可与上述任意名称搭配使用,以检索 关联的值。

此方法需要 Rights.GET_ATTRIBUTES 右边。

添加时间:18

请求

名称类型
iterator server_end<ExtendedAttributeIterator>

OnOpen

FIDL 服务器根据 OpenFlags.DESCRIBE 请求即时生成的事件。

指示打开操作成功或失败,并且可以选择性地描述 对象。如果状态为 ZX_OK,则 info 包含对象的描述性信息 (与 Describe 将返回的内容相同)。

响应

名称类型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

服务器根据以下请求立即生成的事件: NodeFlags.GET_REPRESENTATION。此活动将是第一条消息 并且只发送一次。

有效变体对应于以下某个受支持的协议: 该节点表示连接时间 协商。提供辅助句柄(如果适用)。

如果客户端在更新期间在 protocols 中指定了多个协议, Directory.Open 时,Representation 还包含 通过其标记确认连接时间协商的结果。

这些元素与 NodeProtocolKinds 的支持。

这是 fuchsia.unknown/Queryable.Query + Describe 方法。它以 以避免出现额外的往返行程

响应

名称类型
payload Representation

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

QueryFilesystem

查询文件系统以获取特定于文件系统的信息。

请求

<空>

响应

名称类型
s zx/Status
info FilesystemInfo?

RemoveExtendedAttribute

移除指定的扩展属性。

如果该属性不存在,则返回 ZX_ERR_NOT_FOUND。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName

响应

名称类型
payload Node2_RemoveExtendedAttribute_Result

重新打开

创建与同一节点的另一个连接。

请求

名称类型
rights_request RightsRequest
object_request server_end<Node>

SetAttr

更新有关节点的信息。

如果不支持 flags 指定的任何属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要以下权限:OpenFlags.RIGHT_WRITABLE,否则返回 ZX_ERR_BAD_HANDLE

请求

名称类型
flags NodeAttributeFlags
attributes NodeAttributes

响应

名称类型
s zx/Status

SetExtendedAttribute

将此节点的给定属性 name 的值设置为 value

属性名称可能已存在,在这种情况下会更新属性。 如果属性不存在,系统会创建一个。名称不应 null 字节。如果包含,则返回 ZX_ERR_INVALID_ARGS。

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

添加时间:18

请求

名称类型
name ExtendedAttributeName
value ExtendedAttributeValue
mode SetExtendedAttributeMode

响应

名称类型
payload Node2_SetExtendedAttribute_Result

SetFlags

更改用于访问文件的 Directory.Open 标志。 可开启 / 关闭的受支持标志:

  • OpenFlags.APPEND

此方法不需要任何权限。

请求

名称类型
flags OpenFlags

响应

名称类型
s zx/Status

同步

将节点更新同步到底层媒体(如果存在)。

当文件系统服务器刷新 相关更新,但不保证 这类信息并非由底层媒体留存下来,而任何信息 都致力于硬件客户端可以使用 Sync 来确保排序 操作之间。

此方法不需要任何权限。

请求

<空>

响应

名称类型
payload Node2_Sync_Result

UpdateAttributes

更新有关节点的信息。

  • attributes;如果 attributes 中存在表格字段,则表示 intent 来更新相应属性。

如果该节点不支持任何指定属性,则返回 ZX_ERR_NOT_SUPPORTED

此方法需要 Rights.UPDATE_ATTRIBUTES 权限。

请求

名称类型
payload MutableNodeAttributes

响应

名称类型
payload Node2_UpdateAttributes_Result

可写入

fuchsia.io/file2.fidl 中定义

写入

在跳转偏移量处写入数据。 寻道偏移量向前移动写入的字节数。 如果文件处于附加模式,则首先将跳转偏移量设置为末尾 然后执行写入操作,完成一个原子步骤。

如果定位偏移量加上 data.length 超出,则文件大小可能会增加 当前文件末尾。

  • 请求 data 字节缓冲区以写入文件。
  • 响应 actual_count 表示写入的字节数。

不变量

  • 返回的 actual_count 绝不会大于 data.length
  • 如果服务器因某些原因而无法写入所有数据,不够 空格,actual_count 可以小于 data.length。如果没有字节 则会返回错误。
  • 如果 data.length 为零,则服务器应执行所有检查 确保在不更改文件的情况下拥有写入权限,并返回 零字节的成功写入。如果存在以下情况,定位偏移量仍会更新: 。

此方法需要 Rights.WRITE_BYTES 权限。

请求

名称类型
data Transfer

响应

名称类型
payload Writable_Write_Result

结构体

AdvisoryLockRange

fuchsia.io/locking.fidl 中定义

字段类型说明默认
origin SeekOrigin

用于计算“偏移量”的文件中的位置。

无默认设置
offset int64

字节范围的起点,表示为相对于 origin 的偏移量。 如果 originSeekOrigin.START,则不能为负数。

无默认设置
length int64

字节范围的长度(以字节为单位)。

如果长度为零,则字节范围将扩展至 无论文件有多大

如果长度为负数,则字节范围包括字节 offset + length 不超过 offset - 1(前提是此范围包含 不得超出文件的开头部分。

无默认设置

AdvisoryLocking_AdvisoryLock_Response

fuchsia.io/locking.fidl 中定义

<空>

fuchsia.io/directory2.fidl 中定义

<空>

Directory2_Rename_Response

fuchsia.io/directory2.fidl 中定义

<空>

fuchsia.io/directory2.fidl 中定义

<空>

DirectoryObject

fuchsia.io/node.fidl 中定义

<空>

ExtendedAttributeIterator_GetNext_Response

fuchsia.io/node2.fidl 中定义

字段类型说明默认
attributes vector<vector<uint8>>[128] 无默认设置
last bool 无默认设置

FileObject 资源

fuchsia.io/node.fidl 中定义

字段类型说明默认
event handle<event>?

可选事件,可传输有关对象可读性的信息 或可写性。此事件中继底层对象的相关信息,而非 授予客户端的功能:此事件可能会被标记为“可读”在 没有读取能力的连接。

FILE_SIGNAL_”值。

无默认设置
stream handle<stream>?

用于未来数据流支持的占位符。

目前,服务器不得在此字段中发送句柄。

无默认设置

File_Allocate_Response

fuchsia.io/file2.fidl 中定义

<空>

File_EnableVerity_Response

fuchsia.io/file2.fidl 中定义

<空>

File_GetBackingMemory_Response 资源

fuchsia.io/file2.fidl 中定义

字段类型说明默认
vmo handle<vmo> 无默认设置

File_ReadAt_Response

fuchsia.io/file2.fidl 中定义

字段类型说明默认
data Transfer 无默认设置

File_Resize_Response

fuchsia.io/file2.fidl 中定义

<空>

File_Seek_Response

fuchsia.io/file2.fidl 中定义

字段类型说明默认
offset_from_start uint64 无默认设置

File_WriteAt_Response

fuchsia.io/file2.fidl 中定义

字段类型说明默认
actual_count uint64 无默认设置

FilesystemInfo

fuchsia.io/node.fidl 中定义

字段类型说明默认
total_bytes uint64

可以在文件系统中存储的数据字节数。不算在内 元数据或其他文件系统开销(例如块舍入)。

无默认设置
used_bytes uint64

文件系统正在使用的数据字节数。不算在内 元数据或其他文件系统开销(例如块舍入)。

无默认设置
total_nodes uint64

可以存储在文件系统中的节点数量。

无默认设置
used_nodes uint64

文件系统使用的节点数。

无默认设置
free_shared_pool_bytes uint64

可以从底层卷分配的额外空间量 。如果不受支持或文件系统没有空间来增大, 为零。

无默认设置
fs_id uint64

此文件系统实例的唯一标识符。将不会保留 重新启动。

实现人员应创建一个内核对象(通常是事件),并将其 koid 用于 文件系统 ID。此 koid 可保证系统的唯一性。

无默认设置
block_size uint32

单个文件系统块的大小(以字节为单位)。

无默认设置
max_filename_size uint32

文件系统名称的最大长度。

无默认设置
fs_type uint32

底层文件系统类型的唯一标识符。

无默认设置
padding uint32 无默认设置
name int8[32] 无默认设置

Linkable_LinkInto_Response

fuchsia.io/node2.fidl 中定义

<空>

Node2_RemoveExtendedAttribute_Response

fuchsia.io/node2.fidl 中定义

<空>

Node2_SetExtendedAttribute_Response

fuchsia.io/node2.fidl 中定义

<空>

Node2_Sync_Response

fuchsia.io/node2.fidl 中定义

<空>

Node2_UpdateAttributes_Response

fuchsia.io/node2.fidl 中定义

<空>

NodeAttributes

fuchsia.io/node.fidl 中定义

NodeAttributes 定义了有关文件系统节点的一般信息。

字段类型说明默认
mode uint32

“模式”中说明了保护位和节点类型信息。

无默认设置
id uint64

文件系统唯一 ID。

无默认设置
content_size uint64

节点大小(以字节为单位)。

无默认设置
storage_size uint64

存储节点(可能大于大小)所需的空间(以字节为单位)。

无默认设置
creation_time uint64

创建时间(可在创建后手动更新),从 Unix 纪元(世界协调时间)开始,以纳秒为单位。

无默认设置
modification_time uint64

自 Unix 纪元(世界协调时间)起的最后一次修改时间(以纳秒为单位)。

无默认设置

NodeAttributes2

fuchsia.io/node2.fidl 中定义

字段类型说明默认
mutable_attributes MutableNodeAttributes 无默认设置
immutable_attributes ImmutableNodeAttributes 无默认设置

Readable_Read_Response

fuchsia.io/file2.fidl 中定义

字段类型说明默认
data Transfer 无默认设置

服务

fuchsia.io/node.fidl 中定义

<空>

SymlinkObject

fuchsia.io/node.fidl 中定义

字段类型说明默认
target SymlinkTarget 无默认设置

Writable_Write_Response

fuchsia.io/file2.fidl 中定义

字段类型说明默认
actual_count uint64 无默认设置

精英

AdvisoryLockType 严格

类型:uint32

fuchsia.io/locking.fidl 中定义

名称说明
1

零个或多个连接可以同时持有文件的读取锁。

2

最多只能有一个连接同时持有文件的写锁。 当某个文件的写锁处于锁定状态时,无法持有其他类型的锁 该文件。

3

区域可指定要解锁的区域。

CreationMode 严格

类型:uint32

fuchsia.io/directory2.fidl 中定义

名称说明
0

请仅打开现有对象,切勿创建新对象。

1
已弃用:19
2

如果不存在对象,则创建新对象,否则打开现有对象。

3

如果不存在对象,则创建新对象,否则请求将失败并显示 ZX_ERR_ALREADY_EXISTS

DirentType 柔性环境

类型:uint8

fuchsia.io/directory.fidl 中定义

名称说明
0

类型未知的 dirent。

4

表示目录对象的 dirent。

6

表示块设备对象的 dirent。

8

表示文件对象的 dirent。

16

表示服务对象的 dirent。

HashAlgorithm 柔性

类型:uint8

fuchsia.io/file2.fidl 中定义

表示使用哪种哈希算法为以下集群构建 Merkle 树 启用了 fsverity 的文件

添加时间:HEAD

名称说明
1
2

SeekOrigin 严格

类型:uint32

fuchsia.io/file2.fidl 中定义

用于更新定位偏移量的参考点。请参阅 File.Seek

此枚举与 zx_stream_seek_origin_t 枚举匹配。

名称说明
0

从文件开头开始跳转。 跳转偏移量将设置为 offset 个字节。 在这种情况下,跳转偏移量不能为负数。

1

从文件中的当前位置跳转。 寻道偏移量将是当前寻道偏移量加上 offset 个字节。

2

从文件末尾跳转。 跳转偏移量为文件大小加上 offset 字节。

SetExtendedAttributeMode 严格

类型:uint32

fuchsia.io/node2.fidl 中定义

名称说明
1

无论扩展属性的值是 已存在。

2

创建新的扩展属性。如果已存在,则会失败。

3

替换现有扩展属性的值。如果失败,则为失败 不存在。

WatchEvent 严格

类型:uint8

fuchsia.io/directory.fidl 中定义

名称说明
0

表示正在监控的目录已被删除。为此事件返回的名称 将为 .(点),因为它指的是目录本身。

1

表示已在目录中创建(新建或移动)节点。

2

用于标识已从目录中移除(已删除或移动)的节点。

3

识别监控开始时目录中已经存在的节点。

4

指明不会再发送任何 EXISTING 事件。为此事件返回的名称 将为空,因为它不是指特定条目。

AdvisoryLockRequest

fuchsia.io/locking.fidl 中定义

Ordinal字段类型说明
type AdvisoryLockType

要获取的锁类型。

如果此字段不存在,AdvisoryLock 方法将会失败 。

range AdvisoryLockRange

文件中要锁定的字节范围。

该范围可以超出文件末尾,但不能超出文件末尾 文件开头。

如果没有此字段,则范围默认为整个文件。

wait bool

文件是否应等待对 AdvisoryLock 作出响应 方法,直到可以获取所请求的锁。

如果此字段不存在,文件将不会等待。

ConnectionInfo 资源

fuchsia.io/node2.fidl 中定义

Ordinal字段类型说明
rights Rights

当前关联用户拥有的权利。注意:rights的限制 连接中允许的操作集,但不保证 可用性例如,假设某个广告客户拥有 Rights.EXECUTE 但文件本身没有 EXECUTE 功能,因此无法执行。请参阅 ConnectionOptions.rights.

ConnectorInfo

fuchsia.io/node2.fidl 中定义

Ordinal字段类型说明
attributes NodeAttributes2

请求的对象属性。仅在收到请求时填充此字段。

添加时间:18

DirectoryInfo

fuchsia.io/directory2.fidl 中定义

Ordinal字段类型说明
attributes NodeAttributes2

为目录请求的属性。仅在收到请求时填充此字段。

添加时间:18

DirectoryProtocolOptions

fuchsia.io/directory2.fidl 中定义

Ordinal字段类型说明
optional_rights Rights

可选权利(可协商)。

如果存在,则表示调用方请求获得 该值的交集与请求连接的权利。这个 作为高水位标志,由于此请求被代理处理,可防止权利升级 多个跃点;每个代理的值都必须与 在代理之前请求连接。

此字段是表达 POSIX 语义所必需的,其中目录的 open 必须 为 O_RDONLY,但 openat 可用于打开其中的非目录节点 权限超过 O_RDONLY 的目录。这意味着,POSIX 客户端 请始终将其设为全部权利,以实现 openopenat 调用 ,不禁止目录(例如 O_WRONLYO_RDWR 禁止目录)。

FileInfo 资源

fuchsia.io/file2.fidl 中定义

用于表示节点的辅助数据。

Ordinal字段类型说明
is_append bool

如果文件在附加模式下打开,则为 true。 在附加模式下,在每 以原子方式执行的两个步骤。

observer handle<event>

可选事件,可传输有关对象 可读性或可写性。此事件会中继有关 底层对象,而不是授予客户端的功能:此事件 可能会带有“可读”信号连接网络 读取功能

如果满足以下条件,系统就会显示此事件:

  • 文件连接上的 available_operations 不为空。
  • 文件系统支持发出可读/可写性事件信号。

此事件可能会观察到 FileSignal 值。

stream handle<stream>

可选的流对象,可用于从 文件。

使用流对象读取和写入文件最高可达到 20 倍 比使用读写模式更快的读写模式 File 协议中的操作。

attributes NodeAttributes2

请求的文件属性。仅在收到请求时填充此字段。

添加时间:18

ImmutableNodeAttributes

fuchsia.io/node2.fidl 中定义

Ordinal字段类型说明
protocols NodeProtocolKinds

描述节点支持的表示法类型。 注意:这不是连接时间协商的结果, 通过 representation 传达。

abilities Abilities

描述节点支持的操作类型。 注意:这与连接时使用的权限不同。

content_size uint64

节点大小(以字节为单位)。

storage_size uint64

存储节点所需的空间(可能大于大小),以字节为单位。

id Id

节点的 ID。请参阅 Id。 此 id 在目录的所有条目中应该是唯一的。

change_time uint64

元数据的上次更改时间(自 Unix 纪元 UTC 起算,以纳秒为单位)。

添加时间:HEAD
options VerificationOptions

包含已启用 verity 的文件的验证选项。

添加时间:HEAD
root_hash vector<uint8>[64]

文件的根哈希。并非所有文件系统在所有文件中都支持此功能。

添加时间:HEAD
verity_enabled bool

如果此文件已启用 verity,则为 True。

添加时间:HEAD

MutableNodeAttributes

fuchsia.io/node2.fidl 中定义

Ordinal字段类型说明
creation_time uint64

创建时间(自 Unix 纪元 UTC 开始算起,以纳秒为单位)。

modification_time uint64

上次修改时间(自 Unix 纪元 UTC 起算,以纳秒为单位)。

mode uint32

POSIX 兼容性属性。大多数文件系统都不支持 这些。那些必须简单地存储和检索它们(例如, 扩展属性),并且不要试图解释它们(例如,通过执行 权限检查或处理设备打开的情况)。

添加时间:18
uid uint32
添加时间:18
gid uint32
添加时间:18
rdev uint64
添加时间:18
access_time uint64

上次访问时间(自 Unix 纪元 UTC 起算,以纳秒为单位)。请注意,服务器可能无法 如果这是唯一需要更新的属性,则始终会更新该属性。

添加时间:18
casefold bool

Casefold(不区分大小写的文件名)支持 此属性只能在空目录中更改,并且会由任何 后续创建的子目录的名称。 在写入数据时,唯一支持此功能的文件系统是 Fxfs。

添加时间:HEAD

NodeOptions

fuchsia.io/directory2.fidl 中定义

打开节点时使用的选项。

移除:23

Ordinal字段类型说明
flags NodeFlags
protocols NodeProtocols

调用方可以通过设置与 预期类型:

  • 如果调用方需要目录,但该节点不能作为目录进行访问, 错误为 ZX_ERR_NOT_DIR

  • 如果调用方需要文件,但该节点无法以文件形式访问,则错误为 ZX_ERR_NOT_FILE

  • 在其他不匹配的情况下,如果表为空,则错误为 ZX_ERR_WRONG_TYPE

如果存在多个协议,则生成的协议可能会变为其中任一协议。 调用方应指定 NodeFlags.GET_REPRESENTATION 以接收 Node.OnRepresentation 事件,以便确定协议。

如果不包含,则表示调用方接受任何 Node 协议(包括 Node) 连接器节点本身)。

mode CreationMode

指定目标对象的创建方式。如果要创建某个对象,它的类型 必须由 protocols 指定。检查新对象是否存在和创建 以原子方式执行。

如果类型不明确(例如同时设置了 directoryfile),请求必须失败 与ZX_ERR_INVALID_ARGS共享。

添加时间:19
rights Rights

针对新连接请求的权限。如果任何权利超过了当前的权利 object_request 将关闭,并显示 ZX_ERR_ACCESS_DENIED

授予连接的权限将缩小为目标操作 支持的节点类型。例如,如果目标节点是一个文件, 请求 Rights.WRITE_BYTESRights.MODIFY_DIRECTORY 时,会生成 只能授予 Rights.WRITE_BYTES

如果没有“Rights”字段,则等同于“Rights”未出现。

attributes NodeAttributesQuery

如果设置了 NodeFlags.GET_REPRESENTATION 标志,则在 Node.OnRepresentation.这需要对父级拥有 Rights.GET_ATTRIBUTES 属性 而不是产生的连接。

添加时间:18
create_attributes MutableNodeAttributes

如果要创建对象,则此参数会指定应该随 创建对象。这需要父级上的 Rights.UPDATE_ATTRIBUTES 而不是产生的连接。请求将失败并显示 ZX_ERR_NOT_SUPPORTED 如果不支持任何指定的属性,则会发生此错误。

添加时间:18

NodeProtocols

fuchsia.io/directory2.fidl 中定义

Ordinal字段类型说明
directory DirectoryProtocolOptions
file FileProtocolFlags
node NodeProtocolFlags

要求提供节点协议。唯一支持的右侧是 Rights.GET_ATTRIBUTES。 对生成的连接调用 SetFlags 将导致 ZX_ERR_BAD_HANDLE。如果 已指定 NodeFlags.GET_REPRESENTATION,系统将返回 connector 变体 (即使对象支持不同的表示法)。

添加时间:18

选项

fuchsia.io/directory2.fidl 中定义

可与 Open3 搭配使用的选项。与标志不同,这些选项专用于特定的 用例(例如,在请求属性时缩短往返延迟时间)。

Ordinal字段类型说明
attributes NodeAttributesQuery

请求要与 OnRepresentation 响应一起发送的一组属性。无影响 如果未设置 Flags.FLAG_SEND_REPRESENTATION

create_attributes MutableNodeAttributes

请求在创建新对象时要以原子方式设置的一组属性。无影响 如果 Flags.FLAG_MAYBE_CREATEFlags.FLAG_MUST_CREATE 均未设置,或者对象 已存在。

RightsRequest

fuchsia.io/node2.fidl 中定义

Ordinal字段类型说明
rights Rights

针对新连接请求的权限。

如果 rights 超过了请求连接的权限 那么object_request将关闭 ZX_ERR_ACCESS_DENIED 墓碑。

如果缺失,则会从请求的连接继承权限。

SymlinkInfo

fuchsia.io/symlink.fidl 中定义

添加时间:18

Ordinal字段类型说明
target SymlinkTarget

符号链接在服务器上没有意义;客户端可随意解读 目标。

attributes NodeAttributes2

所请求的符号链接的属性。仅在收到请求时填充此字段。

UnlinkOptions

fuchsia.io/directory2.fidl 中定义

Ordinal字段类型说明
flags UnlinkFlags

VerificationOptions

fuchsia.io/file2.fidl 中定义

用于对文件启用 verity 的一组选项。

添加时间:HEAD

Ordinal字段类型说明
hash_algorithm HashAlgorithm
salt vector<uint8>[32]

salt 会在进行哈希处理之前添加到每个块的前面。

联合体

AdvisoryLocking_AdvisoryLock_Result 严格

fuchsia.io/locking.fidl 中定义

Ordinal变体类型说明
response AdvisoryLocking_AdvisoryLock_Response
err zx/Status

ConnectionProtocols 柔性

fuchsia.io/directory2.fidl 中定义

Ordinal变体类型说明
connector ConnectorFlags

请求在连接上传送节点的底层协议。

node NodeOptions

请求在连接上传送底层 Node 协议。

fuchsia.io/directory2.fidl 中定义

Ordinal变体类型说明

Directory2_Retrieve_Result strict

fuchsia.io/directory2.fidl 中定义

Ordinal变体类型说明
response Directory2_Rename_Response
err zx/Status

fuchsia.io/directory2.fidl 中定义

Ordinal变体类型说明

ExtendedAttributeIterator_GetNext_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response ExtendedAttributeIterator_GetNext_Response
err zx/Status

ExtendedAttributeValue 柔性 资源

fuchsia.io/node2.fidl 中定义

扩展属性的值类型。如果值小于 32768 那么它将以内嵌方式包含在内。大于此大小的值会写入 提取到视频缓冲区中

添加时间:18
Ordinal变体类型说明
bytes vector<uint8>[32768]
buffer handle<vmo>

File_Allocate_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_Allocate_Response
err zx/Status
framework_err internal

File_EnableVerity_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_EnableVerity_Response
err zx/Status
framework_err internal

File_GetBackingMemory_Result 严格的 资源

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_GetBackingMemory_Response
err zx/Status

File_ReadAt_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_ReadAt_Response
err zx/Status

File_Resize_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_Resize_Response
err zx/Status

File_Seek_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_Seek_Response
err zx/Status

File_WriteAt_Result

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response File_WriteAt_Response
err zx/Status

Linkable_LinkInto_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response Linkable_LinkInto_Response
err zx/Status

Node2_GetAttributes_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response NodeAttributes2
err zx/Status

Node2_GetExtendedAttribute_Result 严格的 资源

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response ExtendedAttributeValue
err zx/Status

Node2_RemoveExtendedAttribute_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response Node2_RemoveExtendedAttribute_Response
err zx/Status

Node2_SetExtendedAttribute_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response Node2_SetExtendedAttribute_Response
err zx/Status

Node2_Sync_Result 严格

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response Node2_Sync_Response
err zx/Status

Node2_UpdateAttributes_Result strict

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
response Node2_UpdateAttributes_Response
err zx/Status

NodeInfo 已弃用严格的 资源

fuchsia.io/node.fidl 中定义

Ordinal变体类型说明
service Service

连接未提供任何协议信息。

file FileObject

连接组成 File

directory DirectoryObject

连接组成目录

Readable_Read_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response Readable_Read_Response
err zx/Status

有代表性的灵活 资源

fuchsia.io/node2.fidl 中定义

Ordinal变体类型说明
connector ConnectorInfo

节点的连接器表示形式的辅助数据,使用 进行协议发现和连接

它支持连接到由 位于某个路径下的文件系统服务器,包括不用于编写 Node2

请参阅 NodeProtocolKinds.CONNECTOR

directory DirectoryInfo

用于表示节点的目录的辅助数据。通过 在表示法中选择该变体意味着 依赖于目录协议。

请参阅 NodeProtocolKinds.DIRECTORY

file FileInfo

用于表示节点的辅助数据。通过 在表示法中选择该变体意味着 文件协议。

请参阅 NodeProtocolKinds.FILE

fuchsia.io/symlink.fidl 中定义

Ordinal变体类型说明

Writable_Write_Result 严格

fuchsia.io/file2.fidl 中定义

Ordinal变体类型说明
response Writable_Write_Response
err zx/Status

AllocateMode 灵活

类型:uint32

fuchsia.io/file2.fidl 中定义

名称说明
1
2
4
8
16
32

ConnectorFlags 柔性

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明

FileProtocolFlags 柔性

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明
1

以附加模式打开文件,即连接应寻找至 文件。

如果该文件不支持附加操作,则应生成 ZX_ERR_NOT_SUPPORTED 墓碑。目前,只有 NodeProtocolKinds.FILE 连接支持附加。

2

将对象的长度设为 0,以便在使用之前将其截断。需要使用 Rights.WRITE_BYTES

如果文件不支持截断操作, ZX_ERR_NOT_SUPPORTED 墓碑。

FileSignal 严格

类型:uint32

fuchsia.io/file2.fidl 中定义

名称说明
16777216

表示文件已可供读取。

33554432

表示文件可以写入了。

标志灵活

类型:uint64

fuchsia.io/directory2.fidl 中定义

用于指定应如何打开节点的标志。请注意,位范围预留 例如:

  • 位 1-16:权限标志 PERM_(例如 Flags.PERMREAD)。
  • 位 17-32:POSIX 兼容 O 标记(例如 Flags.FILE_TRUNCATEO_TRUNC)。
  • 位 33-64:特定于 Fuchsia 的标记。

名称说明
1

允许使用 PROTOCOL_SERVICE 打开子节点。

2

读取文件的字节内容。

4

将字节内容写入文件。

8

执行文件的字节内容。

16

获取/查询节点的属性。

32

设置/更新节点的属性。

64

枚举(列出)目录条目。

128

允许使用节点协议打开子节点。必须使用 PERM_ENUMERATE 指定 否则请求会失败并显示 ZX_ERR_INVALID_ARGS

256

修改目录条目(创建/重命名/关联/解除关联)。必须使用 PERM_ENUMERATE 指定 否则请求会失败并显示 ZX_ERR_INVALID_ARGS

8192

继承写入权限(如果可用)(PERM_WRITE、PERM_SET_ATTRIBUTES、PERM_MODIFY、 PERM_ENUMERATE)。如果父级连接缺失,服务器必须确保移除此标志 部分权利。如需了解INHERITED_WRITE_PERMISSIONS 所有资源

16384

继承可用的执行权限 (PERM_EXECUTE)。 如果父级连接缺少 PERM_EXECUTE,服务器必须确保移除此标志。

4294967296

如果这是服务节点,请连接到底层协议。调用方必须确定 使用正确的协议(例如基于路径)。除非与 PROTOCOL_NODE 配合使用,否则指定 则带有请求的其他标志将会失败并显示 ZX_ERR_INVALID_ARGS

4194304

连接到底层节点。优先级高于其他协议。如果是其他PROTOCOL_* 将用于验证目标节点类型。请求将失败,并显示 如果除 PROTOCOL_*FLAG_SEND_REPRESENTATION 之外的标志,则为 ZX_ERR_INVALID_ARGS 。等同于 POSIX O_PATH

524288

调用方接受 fuchsia.io/Directory 协议。等同于 POSIX O_DIRECTORY

8589934592

调用方接受 fuchsia.io/File 协议。

1099511627776

调用成功后,调用者会请求 fuchsia.io/Node.OnRepresentation 事件。

65536

如果不存在对象,则创建新对象,否则打开现有对象。如果已设置, 必须设置单个 PROTOCOL_* 标志,指示要创建的对象类型。等效 发送到 POSIX O_CREAT

131072

如果不存在对象,则创建新对象,否则使用 ZX_ERR_ALREADY_EXISTS。如果设置了此字段,则必须设置一个用于指明类型的 PROTOCOL_* 标志 要创建的对象。优先于 FLAG_CREATE。等同于 POSIX O_EXCL

1048576

以附加模式打开文件。定位指针将移至文件末尾 (EOF) 。等同于 POSIX O_APPEND

262144

打开文件时将其截断,长度为零。等同于 POSIX O_TRUNC

模式类型严格

类型:uint32

fuchsia.io/directory.fidl 中定义

名称说明
2147483648

NodeAttributeFlags 严格

类型:uint32

fuchsia.io/node.fidl 中定义

“属性”字段用于更新节点的节点 由“flags”标记参数。

名称说明
1
2

NodeAttributesQuery 柔性

类型:uint64

fuchsia.io/node2.fidl 中定义

名称说明
1

请求 NodeAttributes.protocols

2

请求 NodeAttributes.abilities

4

请求 NodeAttributes.content_size

8

请求 NodeAttributes.storage_size

32

请求 NodeAttributes.id

64

请求 NodeAttributes.creation_time

128

请求 NodeAttributes.modification_time

256

Posix 属性。

添加时间:18
512
添加时间:18
1024
添加时间:18
2048
添加时间:18
4096
添加时间:18
8192
添加时间:18
16384

Verity 属性。

添加时间:HEAD
32768
添加时间:HEAD
65536
添加时间:HEAD
131072

支持 Casefold(不区分大小写)的文件名。 如果为 true,文件查询将不区分大小写,但将保留大小写。即“Foo”会 可逐字存储,但能以“foo”、“fOO”等形式打开。 符合 Unicode 12 NFD 标准化和大小写折叠标准。

添加时间:HEAD

NodeFlags 柔性

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明
1

请求将 Node.OnRepresentation 事件作为第一条消息在 协议请求。

这是 fuchsia.unknown/Queryable.Query + 固有 Describe 的特例 方法。它是一种优化措施 往返航班

NodeProtocolFlags 柔性

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明
1

仅当底层对象是目录时,才允许连接。试图 打开除目录之外的其他内容将生成 ZX_ERR_NOT_DIR 墓碑。

NodeProtocolKinds 柔性环境

类型:uint64

fuchsia.io/node-protocols.fidl 中定义

打开一个节点时,可能会有多种受支持的表示法,即使 它可能具有固定的基本身份。

目前,我们通过 File 协议访问文件,并向该文件发送 Representation.FileInfo(使用 GET_REPRESENTATION 打开时)。不过, 将来,我们可能会引入更复杂的 FileV2 协议,或者 由专用内核对象支持的更高效的 SuperFastFile。新 客户可以请求更高级的表示法,方法是指定 NodeProtocolKinds 中的相应位,而现有客户端 继续通过旧表示法与节点通信。

NodeProtocolKinds 通过一种协议实现向前兼容性 协商。

这些元素与 表示法

名称说明
1

节点的连接器表示形式。

连接将采用 Node 或目标协议。 具体取决于打开过程中使用的 flag。

2

节点的目录表示形式。

该连接将使用目录协议。

4

节点的文件表示形式。

该连接会使用文件协议。

OpenFlags 严格

类型:uint32

fuchsia.io/directory.fidl 中定义

名称说明
1

可以从目标对象读取。

2

可以写入目标对象。

8

连接可以映射目标对象可执行文件。

65536

如果该对象不存在,请创建一个。

131072

(使用“创建”)如果对象已存在,则失败。

262144

在使用之前截断对象。

524288

断言要打开的对象是一个目录。 如果目标对象不是目录,则返回错误。

1048576

在所有写入之前跳转至对象末尾。

4194304

打开对对象(而非对象本身)的引用。 只有在将以下标志与 NODE_REFERENCE 一起传递时才有效:

  • DIRECTORY
  • NOT_DIRECTORY
  • DESCRIBE 否则,系统将返回错误。 如果使用此方法打开或克隆对象,产生的连接不会 任何权限标志。 生成的连接允许执行一组有限的操作:GetAttrCloneClose DescribeGetFlags。该连接将使用 Node 协议。正在呼叫SetAttrSetFlags 将导致 ZX_ERR_BAD_HANDLE
8388608

向“OnOpen”事件发送到接口请求。

如果打开/克隆成功,该事件将包含一个非 null NodeInfoDeprecated。这个 可用于打开一个不构成 fuchsia.io/Node 的协议;该事件会作为 如果协议为 fuchsia.io/Node,则仅使用目标协议。

134217728

指定此标志可请求与写入权限处理有关的 POSIX 兼容性。 目前,它仅影响 Open 期间的权限处理:

  • 如果目标路径是目录,则新连接上的权限会扩展为包含 当且仅当当前连接和所有中间装载点时,WRITABLE 可写入。
  • 否则,系统将忽略此标志。请求更多权限属于访问遭拒错误 或任何中间装载点上的资源。

如果省略此标志,则打开操作始终会使用请求的权限,这会导致操作失败: 如果请求的权限超出了当前连接附加的权限,则会发生“access denied”错误。

如果请求连接是只读的,并且请求的权限是只读的,则标记 可能会被服务器忽略,不会转发至下游。这是实现细节 跨装载点强制执行分层权限所必需的,应该不会造成任何影响 客户预期行为

268435456

指定此标志可请求与执行权限处理相关的 POSIX 兼容性。 目前,它仅影响 Open 期间的权限处理:

  • 如果目标路径是目录,则新连接上的权限会扩展为包含 当且仅当当前连接和所有中间装载时,EXECUTABLE 是可执行文件
  • 否则,系统将忽略此标志。请求更多权限时出现了访问遭拒错误 或任何中间装载点上的资源。

如果省略此标志,则打开操作始终会使用请求的权限,这会导致操作失败: 如果请求的权限超出了当前连接附加的权限,则会发生“access denied”错误。

如果请求连接是只读的,并且请求的权限是只读的,则标记 可能会被服务器忽略,不会转发至下游。这是实现细节 跨装载点强制执行分层权限所必需的,应该不会造成任何影响 客户预期行为

33554432

断言要打开的对象不是目录。 如果目标对象是目录,则返回错误。

67108864

如果在克隆期间使用新连接,新连接会继承来源连接的权限, 无论是文件还是目录否则,克隆会尝试使用请求的权限。 将任何 RIGHT_* 标志与 OpenFlags.CLONE_SAME_RIGHTS 一起传递是无效的。

16777216

打开目标对象作为块存储设备。

操作严格

类型:uint64

fuchsia.io/rights-abilities.fidl 中定义

权利能力背后的常见成员定义。可能需要执行部分操作 仅适用于特定节点类型(例如,Operations.MODIFY_DIRECTORY 仅适用于目录)。

名称说明
1

连接到目录中的服务。

2

读取节点或其子节点的字节内容。

4

写入节点或其子节点的字节内容。

8

执行节点或其子级的字节内容。

16

读取节点和/或其子节点的属性。

32

更新节点和/或其子节点的属性。

64

读取目录中的节点列表。

128

从目录中打开节点。必须使用 Rights.ENUMERATE 指定,作为目录 可以通过打开子文件进行探测。

256

修改目录中的节点列表,例如创建、重命名、关联/解除关联等... 必须使用 Rights.ENUMERATE 指定,因为可通过名称探测目录内容 出现冲突。

SymlinkProtocolFlags 柔性

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明

取消关联 Flags柔性环境

类型:uint64

fuchsia.io/directory2.fidl 中定义

名称说明
1

设置后,如果 对象不是目录。

VmoFlag 严格

类型:uint32

fuchsia.io/file2.fidl 中定义

名称说明
1

请求 VMO 可读。

2

请求 VMO 可写入。

4

请求该 VMO 可执行。

65536

需要底层 VMO 的写入时复制克隆。请求 如果无法克隆 VMO,则应该失败。可能无法提供 尽在 SHARED_BUFFER

私有克隆至少使用 ZX_VMO_CHILD_SNAPSHOT_AT_LEAST_ON_WRITE 旗帜 zx_vmo_create_child()。这意味着返回的 VMO 采用写时复制(如果请求 WRITE),但可以 可能无法反映基础机制的后续内容更改, 文件。返回的 VMO 不会反映 文件。这些语义与 POSIX mmap() 的语义匹配 MAP_PRIVATE 标志。

在某些情况下,客户端需要 文件可以使用 SHARED_BUFFER,然后使用 zx_vmo_create_child()ZX_VMO_CHILD_SNAPSHOT。不过, 在实现无法返回 SHARED_BUFFER,如果 VMO 创建失败,创建完整快照将失败 附加到了分页器。由于大多数文件系统都会使用 分页系统后,完整快照方法仅应在 在客户端与已知服务器通信的具体情况中。

131072

需要一个能够直接访问 底层 VMO 文件如果存在此类 VMO,请求应失败 。不会随 PRIVATE_CLONE 一起提供。

即使启用了 WRITE 访问权限,返回的 VMO 可能也无法调整大小 请求。在本例中,应使用 File.Resize 来调整大小 文件。

WatchMask 严格

类型:uint32

fuchsia.io/directory.fidl 中定义

名称说明
1

Directory.Watch 使用。请求传输 WatchEvent.DELETED

2

Directory.Watch 使用。请求传输 WatchEvent.ADDED

4

Directory.Watch 使用。请求传输 WatchEvent.REMOVED

8

Directory.Watch 使用。请求传输 WatchEvent.EXISTING

16

Directory.Watch 使用。请求传输 WatchEvent.IDLE

常量

名称类型说明
DIRECTORY_PROTOCOL_NAME fuchsia.io/Directory String
FILE_PROTOCOL_NAME fuchsia.io/File String
INHERITED_WRITE_PERMISSIONS

如果满足以下条件,则 Flags.PERM_INHERIT_WRITE 将从父连接继承的一组权限: 。请注意,如果连接中缺少这些权限, 权限。

INO_UNKNOWN 18446744073709551615 uint64

没有值的节点应返回此值 (从 Readdir 和 GetAttr 中获取)。

MASK_KNOWN_PERMISSIONS
MASK_KNOWN_PROTOCOLS
MASK_PERMISSION_FLAGS 65535 uint64
MASK_POSIX_FLAGS 4294967295 uint64
MAX_ATTRIBUTE_NAME 255 uint64

扩展属性名称的大小上限。

添加时间:18
MAX_BUF 8192 uint64

可为已缓冲操作传输的最大缓冲区空间。 此容量目前设置为任意设置。

MAX_FILENAME 255 uint64

单个文件系统组件的最大长度(以字节为单位)。

MAX_FS_NAME_BUFFER 32 uint64
MAX_INLINE_ATTRIBUTE_VALUE 32768 uint64

要内嵌的扩展属性值的大小上限。 大于此大小的值会在 vmo 中传递。

添加时间:18
MAX_LIST_ATTRIBUTES_CHUNK 128 uint64

ListExtendedAttributes 迭代器中分块的大小上限。

添加时间:18
MAX_NAME_LENGTH 255 uint64

单个文件系统组件的最大长度(以字节为单位)。

MAX_PATH_LENGTH 4095 uint64

文件系统路径的长度上限(以字节为单位)。

MAX_TRANSFER_SIZE 8192 uint64

使用 字节矢量。

MODE_PROTECTION_MASK 4095 uint32

为 POSIX 保护保留的位。原生紫红色文件系统 无需设置 MODE_PROTECTION_MASK 中包含的位, 但希望这样做的文件系统可能会通过 sys/stat.h 来引用其 定义。

MODE_TYPE_BLOCK_DEVICE 24576 uint32
MODE_TYPE_DIRECTORY 16384 uint32
MODE_TYPE_FILE 32768 uint32
MODE_TYPE_MASK 1044480 uint32

表示节点类型的位。规范化检查机制 “模式”是采用“模式”,按位 AND 使用 MODE_TYPE_MASK,并检查是否与模式类型完全匹配。

MODE_TYPE_SERVICE 65536 uint32
NODE_PROTOCOL_NAME fuchsia.io/Node String
OPEN_FLAGS_ALLOWED_WITH_NODE_REFERENCE

打开节点引用时使用的标志必须位于此掩码范围内。

OPEN_RIGHTS

所有已知权利。

RW_STAR_DIR

目录权限别名 rw* 的别名

RX_STAR_DIR

目录权限别名 rx* 的别名

R_STAR_DIR

目录权限别名 r* 的别名

W_STAR_DIR

目录权限别名 w* 的别名

X_STAR_DIR

目录权限别名 x* 的别名

ALIASES

名称说明
能力 fuchsia.io/Operations

功能是节点的固有属性。它们指定它支持的操作。

在不支持操作的节点上调用操作会导致 ZX_ERR_NOT_SUPPORTED。 请注意,当两者都适用时,ZX_ERR_ACCESS_DENIED 的优先级高于 ZX_ERR_NOT_SUPPORTED

ExtendedAttributeName vector[MAX_ATTRIBUTE_NAME]

扩展属性的名称。它不能包含任何 null 字节。其他 超过该大小和最大尺寸时,不会对 名称。

添加时间:18
ID uint64

用于标识节点的类型(如果实现支持 唯一节点 ID。

唯一性保证

客户端通常会呈现一个目录树 将多个后备实现实例组合在一起。ID 只有在相应的实例中才是唯一的。 它们的边界在紫红紫色上非常隐含,这是由于 可透明地转发目录代理。这对客户来说可能很常见 在遍历目录树时观察相同的 Id,当 遇到来自不同后备实例的节点。因此,最好使用 用于调试和提供信息。

fuchsia.fs/FilesystemInfo.fs_id 字段可用于消除歧义 来自不同后备实例的 ID。

名称 string[MAX_NAME_LENGTH]

节点名称的类型,即单个路径组成部分。 例如:foo

不变量

有效的节点名称必须满足以下条件:

  • 长度不能超过 MAX_NAME_LENGTH
  • 此字段不能为空。
  • 不能是“..”(点号)。
  • 不得为“.”。(单点)。
  • 不能包含“/”。
  • 不能包含嵌入式 NUL。
路径 string[MAX_PATH_LENGTH]

路径是包含一个或多个组成部分的字符串,以“/”分隔。 例如:foo/bar/baz

不变量

有效路径必须满足以下条件:

  • 此字段不能为空。
  • 名称长度不能超过 MAX_PATH_LENGTH
  • 不能以“/”开头。
  • 不能以“/”结尾。
  • 该名称必须恰好为“.”。OR 其每个组成部分都必须是有效的 Name

路径应在客户端转换为其规范形式。 例如,客户端应将 "foo/bar/.././baz/" 转换为 "foo/baz" 然后再将其用作路径

权利 fuchsia.io/Operations

权限是特定于连接的属性。它们用于限制对 包括可被授予新连接的那些连接。

在没有相应正确权限的情况下调用操作会导致 ZX_ERR_ACCESS_DENIED 即使该节点不支持相应操作也是如此。

SymlinkTarget vector[MAX_PATH_LENGTH]
令牌 zx/Handle

用于标识到节点的连接的类型。 它表示一项功能:对具有关联权限的节点的引用。

转移 vector[MAX_TRANSFER_SIZE]

用于读取/写入操作的字节矢量类型。