fuchsia.io

新增:7

通訊協定

AdvisoryLocking

定義於 fuchsia.io/locking.fidl

補充性鎖定通訊協定

這個通訊協定的作用是組合成 |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 dst 命名的物件連結 產生下一個符記

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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 ZX_OK,則 info 包含物件的描述性資訊 (與 Describe 傳回的格式相同)。

回應

名稱類型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

當伺服器提出要求,就會立即產生事件 NodeFlags.GET_REPRESENTATION。這項活動是第一則訊息 且只會傳送一次

使用中的變化版本會對應至系統支援的以下其中一個通訊協定: 代表連線時間的結果 協商。提供輔助帳號 (如適用)。

如果用戶端在 protocols 期間 Directory.Open代表還有 透過其代碼進行連線時間協商的結果。

元素會與 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 管道上發送 Epitaph 頻道。

錯誤:

  • 如果 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

這個外掛程式能將一系列可變大小的汙染物讀取到緩衝區中。 目錄中的泥土數量可能非常龐大,例如 對檔案多次呼叫讀取,目錄都有跳轉功能 位移,後續呼叫 ReadDirents 則更新。 每次呼叫 ReadDirents 只會傳回完整的非結構化資料 就不會分割成 ReadDirent 呼叫跳轉時 位移到達結尾處,dirents 為空白。

這些髒污的格式為:

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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 ZX_ERR_NOT_SUPPORTED

使用這個方法需要右側的 Rights.UPDATE_ATTRIBUTES

要求

名稱類型
payload MutableNodeAttributes

回應

名稱類型
payload Node2_UpdateAttributes_Result

觀看

觀察目錄,並在其中接收新增訊息的事件 觀察者要求管道。

選項必須為零;將其保留為預留狀態

與 ReadDirents 類似,這個方法不需要任何權限。

要求

名稱類型
mask WatchMask
options uint32
watcher server_end<DirectoryWatcher>

回應

名稱類型
s zx/Status

Directory1

定義於 fuchsia.io/directory.fidl

Directory 會定義可以包含其他物件的節點。

複製

建立另一個連至同一遠端物件的連線。

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 dst 命名的物件連結 產生下一個符記

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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 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

這個外掛程式能將一系列可變大小的汙染物讀取到緩衝區中。 目錄中的泥土數量可能非常龐大,例如 對檔案多次呼叫讀取,目錄都有跳轉功能 位移,後續呼叫 ReadDirents 則更新。 每次呼叫 ReadDirents 只會傳回完整的非結構化資料 就不會分割成 ReadDirent 呼叫跳轉時 位移到達結尾處,dirents 為空白。

這些髒污的格式為:

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

觀看

觀察目錄,並在其中接收新增訊息的事件 觀察者要求管道。

選項必須為零;將其保留為預留狀態

與 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代表還有 透過其代碼進行連線時間協商的結果。

元素會與 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 管道上發送 Epitaph 頻道。

錯誤:

  • 如果 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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 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[];
};

其中名稱「並非」以空值結束。名稱是相對性 事件所參照項目的路徑。如果維度是空白的 事件未參照特定項目 (例如 IDLE 事件)。

ExtendedAttributeIterator

定義於 fuchsia.io/node2.fidl

新增日期:18

GetNext

取得下一個延伸屬性名稱區塊。如果這是最後一個 最後是 true,最後才會關閉管道 呼叫。

要求

<空白>

回應

名稱類型
payload ExtendedAttributeIterator_GetNext_Result

檔案

定義於 fuchsia.io/file2.fidl

「節點」,包含一定長度的位元組序列。

注意:複製的連線不會與來源分享跳轉偏移 以獲得最佳效能和最安全的連線

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

啟用驗證檔案 (永久性) 驗證作業,並計算默示物的 檔案。在建立默克爾樹之前強制清除,確保快取資料 擷取完成。未來的讀取作業會根據經過計算的麥克爾樹並寫入 遭到拒絕。這個方法可能需要一段時間才能完成,因為實際時間取決於檔案大小。 如要取消此方法,請關閉其發出此方法的連線。

使用這個方法需要右側的 Rights.UPDATE_ATTRIBUTES。 如果檔案系統不支援驗證方式,則傳回 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_CLONESHARED_BUFFER, 實作方式可以自由選擇傳回的 VMO 語意。

  • 要求 flags 一個 VmoFlags,指出所需的存取模式。
  • 錯誤訊息的 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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 ZX_OK,則 info 包含物件的描述性資訊 (與 Describe 傳回的格式相同)。

回應

名稱類型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

當伺服器提出要求,就會立即產生事件 NodeFlags.GET_REPRESENTATION。這項活動是第一則訊息 且只會傳送一次

使用中的變化版本會對應至系統支援的以下其中一個通訊協定: 代表連線時間的結果 協商。提供輔助帳號 (如適用)。

如果用戶端在 protocols 期間 Directory.Open代表還有 透過其代碼進行連線時間協商的結果。

這些元素會與 NodeProtocolKinds

這是 fuchsia.unknown/Queryable.Query + 特定通訊協定的固有 Describe 方法。該名稱目前是 以免需要額外的來回行程

回應

名稱類型
payload Representation

查詢

要求

<空白>

回應

名稱類型
protocol vector<uint8>

QueryFilesystem

向檔案系統查詢檔案系統的特定資訊。

要求

<空白>

回應

名稱類型
s zx/Status
info FilesystemInfo?

已讀

最多讀數傳回位元組。 跳轉位移會隨著讀取的位元組數向前移動。

不變

  • 傳回的 data.length 一律不會大於 count
  • 如果 data.length 小於 count,表示搜尋偏移 已達到此作業的檔案結尾。
  • 如果 data.length 為零,但 count 不是,表示 跳轉偏移值已等於或超過檔案結尾,且無資料 文字。
  • 如果 count 為 0,伺服器應執行所有檢查,確保 讀取權限而不實際讀取任何內容,然後傳回空白 data 向量。

這個方法需要 Rights.READ_BYTES 右側。

如果 count 大於 MAX_TRANSFER_SIZE,則傳回 ZX_ERR_OUT_OF_RANGE

要求

名稱類型
count uint64

回應

名稱類型
payload Readable_Read_Result

ReadAt

最多讀數以位元組為單位。 這不會影響跳轉偏移。

不變

  • 傳回的 data.length 一律不會大於 count
  • 如果 data.length 小於 count,表示ReadAt達到 作為此作業的一部分
  • 如果 data.length 為零,但 count 不是,表示 offset 不在檔案結尾,且無法讀取任何資料。
  • 如果 count 為 0,伺服器應執行所有檢查,確保 讀取權限,不必實際讀取任何內容 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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 ZX_OK,則 info 包含物件的描述性資訊 (與 Describe 傳回的格式相同)。

回應

名稱類型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

當伺服器提出要求,就會立即產生事件 NodeFlags.GET_REPRESENTATION。這項活動是第一則訊息 且只會傳送一次

使用中的變化版本會對應至系統支援的以下其中一個通訊協定: 代表連線時間的結果 協商。提供輔助帳號 (如適用)。

如果用戶端在 protocols 期間 Directory.Open代表還有 透過其代碼進行連線時間協商的結果。

元素會與 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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 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

節點定義了可存取實體的最低通訊協定 特定檔案

關閉

終止連線。

呼叫 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代表還有 透過其代碼進行連線時間協商的結果。

元素會與 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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 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

已讀

最多讀數傳回位元組。 跳轉位移會隨著讀取的位元組數向前移動。

不變

  • 傳回的 data.length 一律不會大於 count
  • 如果 data.length 小於 count,表示搜尋偏移 已達到此作業的檔案結尾。
  • 如果 data.length 為零,但 count 不是,表示 跳轉偏移值已等於或超過檔案結尾,且無資料 文字。
  • 如果 count 為 0,伺服器應執行所有檢查,確保 讀取權限而不實際讀取任何內容,然後傳回空白 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

如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器立即產生這類事件。

表示開啟作業成功或失敗,並視需要一併說明 物件。如果狀態為 ZX_OK,則 info 包含物件的描述性資訊 (與 Describe 傳回的格式相同)。

回應

名稱類型
s zx/Status
info NodeInfoDeprecated?

OnRepresentation

當伺服器提出要求,就會立即產生事件 NodeFlags.GET_REPRESENTATION。這項活動是第一則訊息 且只會傳送一次

使用中的變化版本會對應至系統支援的以下其中一個通訊協定: 代表連線時間的結果 協商。提供輔助帳號 (如適用)。

如果用戶端在 protocols 期間 Directory.Open代表還有 透過其代碼進行連線時間協商的結果。

元素會與 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

屬性名稱可能存在,在此情況下,屬性會更新。 如果屬性不存在,系統會建立該屬性。名稱不得包含 但包含空值。如果是,會傳回 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 中的資料表欄位,則表示 更新對應屬性的意圖。

如果節點不支援任何指定屬性,則傳回 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 的位置。

無預設
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

此檔案系統執行個體的專屬 ID。系統不會保存 就會重新開機。

實作項目應建立一個核心物件 (通常是事件) 並將 koid 用於 檔案系統 ID這個 Koid 可以保證系統中獨一無二。

無預設
block_size uint32

單一檔案系統區塊的大小 (以位元組為單位)。

無預設
max_filename_size uint32

檔案系統名稱的長度上限。

無預設
fs_type uint32

基礎檔案系統類型的專屬 ID。

無預設
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 紀元 (世界標準時間) 之後的上次修改時間 (以 ns 為單位)。

無預設

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 無預設

ENUMS

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

類型不明的骯髒。

4

代表目錄物件的 dirent。

6

代表區塊裝置物件的髒汙。

8

代表檔案物件的目錄。

16

代表服務物件的目錄。

HashAlgorithm 彈性

類型:uint8

定義於 fuchsia.io/file2.fidl

表示要使用哪個雜湊演算法來建構默克爾樹 支援 fverity 的檔案。

新增時間: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 方法將會失敗 與 ZX_ERR_INVALID_ARGS 比對。

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

進行協商的權利。

出現時,表示呼叫端要求的其他選用權利等同於 這個值和要求連線的權利的交集。這個 是高度標示,可阻止權限提報,因為這項要求是由 Proxy 處理 在多個躍點上每個 Proxy 都必須將值與 先要求連線,再啟用 Proxy。

此為必要欄位,用於表示 POSIX 語意,其中目錄的 open 必須 的 O_RDONLY,但 openat 可用於開啟其中的非目錄節點 權限超過 O_RDONLY 的目錄。這代表 POSIX 用戶端 一律將其設為完整的權利組合,以執行 openopenat 呼叫 都不會禁止目錄 (例如 O_WRONLYO_RDWR 禁止出價目錄)。

FileInfo 資源

定義於 fuchsia.io/file2.fidl

節點檔案表示法的輔助資料。

Ordinal欄位類型說明
is_append bool

如果檔案是以附加模式開啟,則為「是」。 在附加模式中,跳轉偏移會在每個 寫入,這兩個步驟會以不可分割的方式執行

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 紀元 (世界標準時間) 起算。

新增時間:HEAD
options VerificationOptions

包含已啟用驗證檔案的驗證選項。

新增時間:HEAD
root_hash vector<uint8>[64]

檔案的根雜湊。並非所有檔案系統都對所有檔案都支援這項設定。

新增時間:HEAD
verity_enabled bool

如果這個檔案已啟用驗證狀態,則為「是」。

新增時間:HEAD

MutableNodeAttributes

定義於 fuchsia.io/node2.fidl

Ordinal欄位類型說明
creation_time uint64

自 Unix 紀元 (世界標準時間) 以來的建立時間 (以奈秒為單位)。

modification_time uint64

自 Unix 紀元 (世界標準時間) 以來的上次修改時間 (以奈秒為單位)。

mode uint32

POSIX 相容性屬性。大多數檔案系統不支援 這些原則只需要儲存及擷取資料 (例如 擴充屬性),也不嘗試解讀這類屬性 (例如 權限檢查或處理裝置時特別開啟)。

新增日期:18
uid uint32
新增日期:18
gid uint32
新增日期:18
rdev uint64
新增日期:18
access_time uint64

上次存取時間 (以奈秒為單位),自 Unix 紀元 (世界標準時間) 起算。請注意,伺服器可能 如果這是唯一更新的屬性,則一律更新此值。

新增日期: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

如果沒有適當的權利欄位,則等同於空白的權利。

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

新連線要求的權限。

如果超出要求連線的權利 則 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

這組選項可用來啟用檔案的身分。

新增時間:HEAD

Ordinal欄位類型說明
hash_algorithm HashAlgorithm
salt vector<uint8>[32]

進行雜湊處理前,每個區塊前方都會加上 salt

聯合國

AdvisoryLocking_AdvisoryLock_Result 嚴格

定義於 fuchsia.io/locking.fidl

OrdinalVariant類型說明
response AdvisoryLocking_AdvisoryLock_Response
err zx/Status

ConnectionProtocols 彈性

定義於 fuchsia.io/directory2.fidl

OrdinalVariant類型說明
connector ConnectorFlags

透過連線提供節點的基礎通訊協定的要求。

node NodeOptions

基礎 Node 通訊協定會透過連線提供的要求。

定義於 fuchsia.io/directory2.fidl

OrdinalVariant類型說明

目錄 2_Rename_Result 嚴格

定義於 fuchsia.io/directory2.fidl

OrdinalVariant類型說明
response Directory2_Rename_Response
err zx/Status

定義於 fuchsia.io/directory2.fidl

OrdinalVariant類型說明

ExtendedAttributeIterator_GetNext_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response ExtendedAttributeIterator_GetNext_Response
err zx/Status

ExtendedAttributeValue 彈性 資源

定義於 fuchsia.io/node2.fidl

擴充屬性的值類型。如果值小於 32768 則會併入內嵌內容寫入大於此大小的值 移至 vmo 緩衝區

新增日期:18
OrdinalVariant類型說明
bytes vector<uint8>[32768]
buffer handle<vmo>

File_Allocate_Result 嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_Allocate_Response
err zx/Status
framework_err internal

File_EnableVerity_Result 結果嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_EnableVerity_Response
err zx/Status
framework_err internal

File_GetBackingMemory_Result 嚴格 資源

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_GetBackingMemory_Response
err zx/Status

File_ReadAt_Result 的嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_ReadAt_Response
err zx/Status

File_Resize_Result 結果嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_Resize_Response
err zx/Status

File_Seek_Result 嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_Seek_Response
err zx/Status

File_WriteAt_Result 結果嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response File_WriteAt_Response
err zx/Status

Linkable_LinkInto_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response Linkable_LinkInto_Response
err zx/Status

Node2_GetAttributes_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response NodeAttributes2
err zx/Status

Node2_GetExtendedAttribute_Result 嚴格 資源

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response ExtendedAttributeValue
err zx/Status

Node2_RemoveExtendedAttribute_Result strict

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response Node2_RemoveExtendedAttribute_Response
err zx/Status

Node2_SetExtendedAttribute_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response Node2_SetExtendedAttribute_Response
err zx/Status

Node2_Sync_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response Node2_Sync_Response
err zx/Status

Node2_UpdateAttributes_Result 嚴格

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
response Node2_UpdateAttributes_Response
err zx/Status

NodeInfo 已淘汰嚴格 資源

定義於 fuchsia.io/node.fidl

OrdinalVariant類型說明
service Service

此連線未提供任何通訊協定資訊。

file FileObject

連線會產生 File

directory DirectoryObject

連線構成「目錄」

Readable_Read_Result 嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response Readable_Read_Response
err zx/Status

代表性的彈性 資源

定義於 fuchsia.io/node2.fidl

OrdinalVariant類型說明
connector ConnectorInfo

用來表示節點連接器表示法的輔助資料, 以便瞭解通訊協定探索與連線

它支援連線至 維護檔案系統伺服器的路徑 Node2

請參閱 NodeProtocolKinds.CONNECTOR

directory DirectoryInfo

節點目錄表示法的輔助資料。 在「Representation」(表示法) 中選擇此子類 連線會採用 Directory 通訊協定。

請參閱 NodeProtocolKinds.DIRECTORY

file FileInfo

節點檔案表示法的輔助資料。 在「Representation」(表示法) 中選擇此子類 連線會讀取 File 通訊協定。

請參閱 NodeProtocolKinds.FILE

定義於 fuchsia.io/symlink.fidl

OrdinalVariant類型說明

Writable_Write_Result 嚴格

定義於 fuchsia.io/file2.fidl

OrdinalVariant類型說明
response Writable_Write_Response
err zx/Status

商業智慧

AllocateMode 彈性

類型:uint32

定義於 fuchsia.io/file2.fidl

名稱說明
1
2
4
8
16
32

Connectors 旗標彈性

類型: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)。
  • Bits 17-32:POSIX 相容性 O 旗標 (例如 Flags.FILE_TRUNCATEO_TRUNC)。
  • Bits 33-64:Fchsia 專用旗幟。

名稱說明
1

允許使用 PROTOCOL_SERVICE 開啟子節點。

2

讀取檔案的位元組內容。

4

將位元組內容寫入檔案。

8

執行檔案的位元組內容。

16

取得/查詢節點屬性。

32

設定/更新節點的屬性。

64

列舉 (清單) 目錄項目。

128

允許使用節點通訊協定開啟子節點。必須以 PERM_ENUMERATE 指定 否則要求就會因 ZX_ERR_INVALID_ARGS 而失敗。

256

修改目錄項目 (create/rename/link/unlink)。必須以 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

ModeType 嚴格

類型:uint32

定義於 fuchsia.io/directory.fidl

名稱說明
2147483648

NodeAttributeFlags 嚴格

類型:uint32

定義於 fuchsia.io/node.fidl

「attributes」欄位更新節點時 「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

詳細屬性。

新增時間: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 通訊協定存取檔案,然後將 使用 GET_REPRESENTATION 開啟 Representation.FileInfo。不過 日後我們可能會推出更複雜的 FileV2 通訊協定,或 更有效率的 SuperFastFile,由專用核心物件提供支援。全新內容 用戶端可以在要求層級時,指定 NodeProtocolKinds 中的對應位元,而現有用戶端 繼續透過舊版表示法與節點通訊。

NodeProtocolKinds 可透過通訊協定達成前瞻相容性 協商。

元素會與 表示法

名稱說明
1

節點的連接器表示法。

連線將朗讀 Node 或目標通訊協定。 視開啟期間使用的旗標而定

2

節點的目錄表示法。

連線將會連線至 Directory 通訊協定。

4

節點的檔案表示法。

連線會說出 File 通訊協定。

OpenFlags 嚴格

類型:uint32

定義於 fuchsia.io/directory.fidl

名稱說明
1

可從目標物件讀取。

2

可寫入目標物件。

8

連線可以對應目標物件可執行檔。

65536

如果物件不存在,請建立該物件。

131072

(含「建立」) 物件如果已存在,則失敗。

262144

使用前截斷物件。

524288

斷言要開啟的物件是目錄。 如果目標物件不是目錄,則傳回錯誤。

1048576

在所有寫入作業開始前跳轉至物件結尾。

4194304

開啟物件的參照,而非物件本身。 「只能」將下列標記與 NODE_REFERENCE 一併傳遞:

  • DIRECTORY
  • NOT_DIRECTORY
  • DESCRIBE 否則會傳回錯誤。 如果使用這個方法開啟或複製物件,產生的連線則不會 允許任何權限標記 產生的連線允許一組有限的作業:GetAttrCloneCloseDescribeGetFlags。連線會說出 Node 通訊協定。正在撥打 SetAttrSetFlags 會產生 ZX_ERR_BAD_HANDLE
8388608

狀態為「OnOpen」的要求事件是否已傳送到介面要求。

如果開啟/本機副本成功,事件會包含非空值的 NodeInfoDeprecated。這個 用於開啟未組成 fuchsia.io/Node 的通訊協定;事件傳送依據為 如果通訊協定為 fuchsia.io/Node,則只會使用目標通訊協定。

134217728

指定這個標記,要求 POSIX 相容性處理與寫入權限相關。 目前這項設定會影響開啟「開啟」期間的權限處理方式:

  • 如果目標路徑是目錄,新連線的權利會擴大以納入 只有在目前的連線與所有中繼掛接點時才會使用 WRITABLE 可寫入
  • 否則系統會忽略這個標記。要求更多權限時,顯示存取遭拒錯誤 與目前連線或任何中繼掛接點上的流量相比。

如果省略這個標記,則一律使用所要求的權限,導致作業失敗 要求的權限超過目前連線所附的權限時,發生存取遭拒錯誤。

如果要求連線為唯讀,而要求的權限為唯讀狀態,標記 伺服器可忽略,也不會在下游轉送。這是實作詳細資料 對各掛接點強制執行階層權限的必要資料,因此不會有任何影響 對用戶端的預期行為造成影響

268435456

如要要求執行權限處理方面的 POSIX 相容性,請指定此旗標。 目前這項設定會影響開啟「開啟」期間的權限處理方式:

  • 如果目標路徑是目錄,新連線的權利會擴大以納入 只有在目前的連線和所有中繼掛接時才會發生 EXECUTABLE 分數都是可執行檔
  • 否則系統會忽略這個標記。要求更多權限時,顯示存取遭拒錯誤 與目前連線或任何中繼掛接點上的流量相比。

如果省略這個標記,則一律使用所要求的權限,導致作業失敗 要求的權限超過目前連線所附的權限時,發生存取遭拒錯誤。

如果要求連線為唯讀,而要求的權限為唯讀狀態,標記 伺服器可忽略,也不會在下游轉送。這是實作詳細資料 對各掛接點強制執行階層權限的必要資料,因此不會有任何影響 對用戶端的預期行為造成影響

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

名稱說明

取消連結旗標彈性

類型:uint64

定義於 fuchsia.io/directory2.fidl

名稱說明
1

設定後,如果 並非目錄。

VmoFlags 嚴格

類型:uint32

定義於 fuchsia.io/file2.fidl

名稱說明
1

可讀取 VMO 的要求。

2

可寫入 VMO 的要求。

4

要求 VMO 可執行。

65536

需要基礎 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 存在,無法建立完整快照 附加至呼叫器。由於大多數檔案系統都會採用 因此建議只在 Vertex AI Workbench 中 特殊情況,例如用戶端與已知伺服器通訊時。

131072

要求的 VMO 必須能直接存取 匯入檔案的基礎 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

沒有 ino 值的節點應傳回這個值 例如 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

可使用以下模型讀取/寫入作業的 I/O 大小上限: 和位元組向量

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

用來表示節點類型的位元。檢查標準機制 則是採用「mode」做為節點類型 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]

擴充屬性的名稱。不得包含任何空值位元組。其他 以及大小上限,就不會對 名稱。

新增日期:18
ID uint64

用來識別節點的類型 (如果實作支援某些概念) 不重複的節點 ID

不重複性保證

用戶端通常會以目錄樹狀結構的形式呈現, 組合多個備用實作執行個體ID 在對應的執行個體中,值只會是唯一的。 這些界線確實單純,因為 透明轉送目錄 Proxy這可能出現在用戶端中 在掃遍目錄樹狀結構時觀察相同的 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
  • 開頭不得為「/」。
  • 結尾不得為「/」。
  • 名稱必須與 "." 完全相同。「或」其每個元件都必須是有效的「名稱」

請在用戶端將路徑轉換為標準格式。 舉例來說,客戶應將 "foo/bar/.././baz/" 轉換為 "foo/baz" 再以該路徑做為路徑

權利 fuchsia.io/Operations

權限是連線專屬的屬性,並限制可對 GKE 執行哪些作業 連線,包括可能授予新連線的連線。

如果叫用的作業沒有對應的正確結果,會導致 ZX_ERR_ACCESS_DENIED 即使節點不支援作業

SymlinkTarget vector[MAX_PATH_LENGTH]
符記 zx/Handle

用來識別節點連線的類型。 它代表能力:具有相關權限的節點參照。

轉移 vector[MAX_TRANSFER_SIZE]

用於讀取/寫入作業的位元組向量類型。