通訊協定
AdvisoryLocking
建議鎖定通訊協定。
這個通訊協定應整合至 |File| 通訊協定,以支援建議鎖定。
建議鎖定僅供參考,也不會阻止實際的讀取或寫入作業在檔案上發生,無論是透過這個連線或其他連線。
這些原始物件旨在支援 flock() 和 fcntl(),特別是 F_SETLK、F_SETLKW 和 F_GETLK,這些功能是 Fuchsia 上執行的程式碼預期從其他作業系統取得的功能。
AdvisoryLock
取得基礎檔案的建議鎖定。
鎖定狀態會持續到連線關閉,或使用 |AdvisoryLockType.UNLOCK| 呼叫這個方法,明確解除鎖定。
建議鎖定僅供參考,也不會阻止透過這個連線或其他連線,對檔案進行實際的讀取或寫入作業。
這個方法需要下列權限:
- 如果
request.type為 AdvisoryLockType.READ,則為 Rights.READ_BYTES。 - 如果
request.type為 AdvisoryLockType.WRITE,則為 Rights.WRITE_BYTES。
錯誤
ZX_ERR_BAD_STATE無法取得指定的鎖定類型。舉例來說,另一個連線可能持有衝突的鎖定類型。ZX_ERR_NOT_SUPPORTED這個檔案不支援建議鎖定。ZX_ERR_ACCESS_DENIED:這個連線沒有足夠權限,無法取得指定類型的鎖定。
要求
| 名稱 | 類型 |
|---|---|
request |
AdvisoryLockRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
AdvisoryLocking_AdvisoryLock_Result
|
目錄
目錄定義了可包含其他物件的節點。
AdvisoryLock
取得基礎檔案的建議鎖定。
鎖定狀態會持續到連線關閉,或使用 |AdvisoryLockType.UNLOCK| 呼叫這個方法,明確解除鎖定。
建議鎖定僅供參考,也不會阻止透過這個連線或其他連線,對檔案進行實際的讀取或寫入作業。
這個方法需要下列權限:
- 如果
request.type為 AdvisoryLockType.READ,則為 Rights.READ_BYTES。 - 如果
request.type為 AdvisoryLockType.WRITE,則為 Rights.WRITE_BYTES。
錯誤
ZX_ERR_BAD_STATE無法取得指定的鎖定類型。舉例來說,另一個連線可能持有衝突的鎖定類型。ZX_ERR_NOT_SUPPORTED這個檔案不支援建議鎖定。ZX_ERR_ACCESS_DENIED:這個連線沒有足夠權限,無法取得指定類型的鎖定。
要求
| 名稱 | 類型 |
|---|---|
request |
AdvisoryLockRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
AdvisoryLocking_AdvisoryLock_Result
|
複製
要求
| 名稱 | 類型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
關閉
終止連線。
呼叫 Close 後,用戶端不得傳送任何其他要求。
伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。
關閉管道的用戶端,在語意上應等同於呼叫 Close,而不知道關閉作業何時完成或其狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
CreateSymlink
建立符號連結。
name 是要為建立的符號連結指定的名稱。target 是符號連結的目標,在伺服器上沒有任何意義。除了伺服器選擇的長度上限外,伺服器不會對 target 執行任何驗證。connection 是管道的選用伺服器端,會在成功建立的節點上使用 Symlink 通訊協定。
-
如果
name已存在,則會發生錯誤ZX_ERR_ALREADY_EXISTS。 -
如果
target超過伺服器對符號連結的長度限制,則會發生ZX_ERR_BAD_PATH錯誤。 -
如果
name不是有效的名稱,則會傳回錯誤ZX_ERR_INVALID_ARGS。 -
如果伺服器不支援建立符號連結,則會傳回錯誤
ZX_ERR_NOT_SUPPORTED。
要求
| 名稱 | 類型 |
|---|---|
name |
Name
|
target |
SymlinkTarget
|
connection |
server_end:Symlink?
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Directory_CreateSymlink_Result
|
DeprecatedClone
已淘汰 - 請改用 fuchsia.unknown/Cloneable.Clone。
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
object |
server_end:Node
|
DeprecatedGetAttr
已淘汰 - 請改用 Node.GetAttributes。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
attributes |
NodeAttributes
|
DeprecatedGetFlags
[已淘汰 - 請改用新的 GetFlags 方法。]
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
flags |
OpenFlags
|
DeprecatedGetToken
取得目錄的權杖,日後可用於識別目錄存取權。只要要求權杖的連線保持開啟,權杖就會持續有效。
這個方法需要下列權限:OpenFlags.RIGHT_WRITABLE,否則會傳回 ZX_ERR_BAD_HANDLE。
這個方法已淘汰:請改用 fuchsia.io/Node.GetToken (新增後)。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
token |
handle<handle>?
|
DeprecatedOpen
已淘汰 - 請改用 fuchsia.io/Directory.Open。
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
mode |
ModeType
|
path |
Path
|
object |
server_end:Node
|
DeprecatedSetAttr
已淘汰 - 請改用 Node.UpdateAttributes。
要求
| 名稱 | 類型 |
|---|---|
flags |
NodeAttributeFlags
|
attributes |
NodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
DeprecatedSetFlags
[已淘汰 - 請改用新的 SetFlags 方法。]
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
GetAttributes
取得節點相關資訊。
節點的屬性應保持穩定,不受用於存取節點的特定通訊協定影響。
如果特定屬性不適用或不支援,檔案系統應將對應欄位留空。
query:指定要擷取哪些屬性的位元遮罩。伺服器不應傳回超過必要數量的資料。
attributes傳回的屬性。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
query |
NodeAttributesQuery
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetAttributes_Result
|
GetExtendedAttribute
取得與這個節點指定屬性 name 相關聯的值。
屬性名稱長度上限為 MAX_ATTRIBUTE_NAME。不需遵循特定結構。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetExtendedAttribute_Result
|
GetFlags
在開啟/建立節點後,查詢適用於該節點的旗標。這個方法不需要任何權限。
請注意,適用於連線的最終旗標組合,可能與建立連線時使用的 fuchsia.io/Directory.Open 要求所指定的旗標不同:
Flags.PERM_INHERIT_*:僅在判斷連線權限時適用。Flags.PROTOCOL_*:只會顯示連線的通訊協定。Flags.FLAG_*:僅在開啟資源時適用,不屬於連線的一部分。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetFlags_Result
|
GetToken
取得權杖,以便日後識別這項連線。只要要求權杖的連線保持開啟,權杖就會持續有效。
這個方法不需要任何權限。請注意,權杖會識別連線,因此會攜帶此連線的權限資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetToken_Result
|
連結
在權杖代表的目錄中,建立名為 dst 的連結,指向名為 src 的物件。
src 必須是已解析的物件名稱。如果字串中包含「/」,則會傳回 ZX_ERR_INVALID_ARGS。
dst 必須是已解析的物件名稱。如果字串中包含「/」,則會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要下列權限:OpenFlags.RIGHT_WRITABLE 和 OpenFlags.RIGHT_READABLE,否則會傳回 ZX_ERR_BAD_HANDLE。
這項作業會以不可分割的方式執行,同時重新命名或取消連結來源,例如,如果有兩個執行者同時運作,其中一個執行者執行重新命名,影響這個目錄中的來源,另一個執行者執行連結,則每個執行者都會以未指定的順序不可分割地執行。
要求
| 名稱 | 類型 |
|---|---|
src |
Name
|
dst_parent_token |
handle<handle>
|
dst |
Name
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
ListExtendedAttributes
為與這個節點相關聯的所有擴充屬性名稱建立疊代器。如果發生錯誤,系統會將錯誤做為疊代器要求管道上的墓誌銘傳回,然後關閉管道。
GetExtendedAttributes 可與上述任一名稱搭配使用,以擷取相關聯的值。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
iterator |
server_end:ExtendedAttributeIterator
|
OnOpen
如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器會積極產生事件。
指出開啟作業成功或失敗,並視需要描述物件。如果狀態為 ZX_OK,info 會包含物件的描述性資訊 (與 Describe 傳回的資訊相同)。
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
NodeInfoDeprecated?
|
OnRepresentation
如果 Flags.FLAG_SEND_REPRESENTATION 要求,伺服器會主動產生事件。這個事件會做為伺服器的第一則訊息傳送,且只會傳送一次。
有效變體對應至目標節點的協商通訊協定 (即這個管道目前使用的通訊協定)。此外,事件也會傳回輔助控制代碼和要求的屬性。
回應
| 名稱 | 類型 |
|---|---|
payload |
Representation
|
開啟
開啟 (或建立) 相對於這個目錄的節點。如有任何錯誤,系統會透過 object 管道傳送墓誌銘來通知。
錯誤:
- 如果
path無效,則為ZX_ERR_BAD_PATH - 請參閱「標記」一節,瞭解可能根據
flags傳達的其他錯誤
要求
| 名稱 | 類型 |
|---|---|
path |
Path
|
flags |
Flags
|
options |
Options
|
object |
handle<channel>
|
查詢
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
protocol |
vector<uint8>
|
QueryFilesystem
查詢檔案系統,取得檔案系統和/或磁碟區的詳細資料。如果目前的磁碟區有不同的設定,或儲存空間與檔案系統的其他部分分開計算,系統可能會回報該磁碟區的詳細資料,而非整個檔案系統的詳細資料。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
FilesystemInfo?
|
ReadDirents
將大小不一的 dirent 集合讀取至緩衝區。目錄中的 dirent 數量可能非常龐大:類似於對檔案多次呼叫讀取,目錄具有搜尋偏移,會在後續呼叫 ReadDirents 時更新。每次呼叫 ReadDirents 都只會傳回完整的 dirent 結構,不會在 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/Result
|
dirents |
vector<uint8>:8192
|
RemoveExtendedAttribute
移除指定的擴充屬性。
如果屬性不存在,則會傳回 ZX_ERR_NOT_FOUND。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_RemoveExtendedAttribute_Result
|
重新命名
在 dst_parent_token 代表的目錄中,將名為 src 的節點重新命名為 dst。
src 和 dst 必須是有效的節點名稱。如要瞭解有效名稱的構成要素,請參閱「名稱」。
這個方法需要目前連線和 dst_parent_token 識別的連線具備下列權限:
請務必符合下列規定,以免權限升級。
如果來源和目的地目錄不同,來源目錄也必須具備檔案支援的最大能力組合,通常為 Rights.READ_BYTES、Rights.WRITE_BYTES、Rights.GET_ATTRIBUTES 和 Rights.UPDATE_ATTRIBUTES。部分檔案系統可能也支援 Rights.EXECUTE 權限。
如果 src 指向目錄,且與目的地目錄不同,則來源目錄也必須具備 Rights.CONNECT 和 Rights.TRAVERSE 權限。
- 如果
src或dst無效,則會傳回錯誤ZX_ERR_INVALID_ARGS。 - 錯誤
ZX_ERR_ACCESS_DENIED:權限不足。
要求
| 名稱 | 類型 |
|---|---|
src |
Name
|
dst_parent_token |
Token
|
dst |
Name
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Directory_Rename_Result
|
倒轉
重設目錄搜尋偏移量。
這個方法需要下列權限:
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
SetExtendedAttribute
將這個節點的指定屬性 name 值設為 value。
如果屬性名稱已存在,系統會更新該屬性。如果屬性不存在,系統會建立屬性。名稱不得包含空值位元組。如果發生這種情況,系統會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
value |
ExtendedAttributeValue
|
mode |
SetExtendedAttributeMode
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetExtendedAttribute_Result
|
SetFlags
設定開啟後要套用至這個節點的旗標。這個方法不需要任何權限。
目前僅支援 Flags.FILE_APPEND。呼叫這個方法時,如果不使用任何旗標,就會清除附加模式。
錯誤:
ZX_ERR_NOT_SUPPORTED:物件不支援這項功能或指定標記。ZX_ERR_INVALID_ARGS:指定了Flags.FILE_APPEND以外的flags。
要求
| 名稱 | 類型 |
|---|---|
flags |
Flags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetFlags_Result
|
同步
將節點的更新同步至基礎媒體 (如有)。
當檔案系統伺服器將相關更新排清至基礎媒體時,這個方法會傳回,但不保證基礎媒體已保留資訊,也不保證任何資訊已提交至硬體。用戶端可以使用 Sync,確保作業之間的順序。
這個方法不需要任何權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_Sync_Result
|
取消連結
從這個目錄的項目清單中移除子節點。
注意:這不保證基礎物件會遭到刪除。雖然連結會從包含的目錄中移除,但具有多個參照的物件 (例如仍開啟的檔案) 只有在所有參照都關閉後,才會實際刪除。
* 如果連線沒有 Rights.WRITE_BYTES,則會傳回錯誤 ZX_ERR_ACCESS_DENIED。* 如果基礎檔案系統不支援寫入,則會傳回錯誤 ZX_ERR_NOT_SUPPORTED。* 如果 name 無效,則會發生錯誤 ZX_ERR_BAD_PATH。* 如果 name 參照非空白目錄,則會發生錯誤 ZX_ERR_NOT_EMPTY。* 如果 name 參照包含遠端管道的掛接點,則會發生錯誤 ZX_ERR_UNAVAILABLE。* 如果選項要求目錄,但找到的不是目錄,則會發生錯誤 ZX_ERR_NOT_DIR。
其他錯誤可能是由檔案系統相關原因造成。
這個方法需要下列權限:
* Rights.ENUMERATE * Rights.MODIFY_DIRECTORY
要求
| 名稱 | 類型 |
|---|---|
name |
Name
|
options |
UnlinkOptions
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Directory_Unlink_Result
|
UpdateAttributes
更新節點資訊。
attributesattributes中有表格欄位,表示要更新對應的屬性。
如果節點不支援任何指定屬性,則傳回 ZX_ERR_NOT_SUPPORTED。
這個方法需要 Rights.UPDATE_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
payload |
MutableNodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_UpdateAttributes_Result
|
智慧手錶
監控目錄,在監控器要求管道上接收新增訊息的事件。
選項必須為零,這是保留值。
這個方法需要下列權限:
要求
| 名稱 | 類型 |
|---|---|
mask |
WatchMask
|
options |
uint32
|
watcher |
server_end:DirectoryWatcher
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
DirectoryWatcher
DirectoryWatcher 會從檔案系統伺服器傳輸訊息,說明檔案系統中發生的事件。用戶端可以使用 Directory.Watch 方法註冊新的監控程式,並篩選要接收哪些事件的通知。
DirectoryWatcher 會傳送以下格式的訊息:
struct {
uint8 event;
uint8 len;
char name[];
};
名稱「不」以空值結尾。名稱是事件參照項目的相對路徑。如果事件未參照特定項目 (例如 IDLE 事件),這個欄位會留空。
ExtendedAttributeIterator
GetNext
取得下一組擴充屬性名稱。如果這是最後一個區塊,last 會設為 true,且管道會在呼叫後關閉。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
ExtendedAttributeIterator_GetNext_Result
|
檔案
包含特定長度位元組序列的節點。
注意:複製的連線不會與來源連線共用搜尋偏移量。
AdvisoryLock
取得基礎檔案的建議鎖定。
鎖定狀態會持續到連線關閉,或使用 |AdvisoryLockType.UNLOCK| 呼叫這個方法,明確解除鎖定。
建議鎖定僅供參考,也不會阻止透過這個連線或其他連線,對檔案進行實際的讀取或寫入作業。
這個方法需要下列權限:
- 如果
request.type為 AdvisoryLockType.READ,則為 Rights.READ_BYTES。 - 如果
request.type為 AdvisoryLockType.WRITE,則為 Rights.WRITE_BYTES。
錯誤
ZX_ERR_BAD_STATE無法取得指定的鎖定類型。舉例來說,另一個連線可能持有衝突的鎖定類型。ZX_ERR_NOT_SUPPORTED這個檔案不支援建議鎖定。ZX_ERR_ACCESS_DENIED:這個連線沒有足夠權限,無法取得指定類型的鎖定。
要求
| 名稱 | 類型 |
|---|---|
request |
AdvisoryLockRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
AdvisoryLocking_AdvisoryLock_Result
|
分配
為這個檔案預先分配磁碟空間。
要求
| 名稱 | 類型 |
|---|---|
offset |
uint64
|
length |
uint64
|
mode |
AllocateMode
|
回應
| 名稱 | 類型 |
|---|---|
payload |
File_Allocate_Result
|
複製
要求
| 名稱 | 類型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
關閉
終止連線。
呼叫 Close 後,用戶端不得傳送任何其他要求。
伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。
關閉管道的用戶端,在語意上應等同於呼叫 Close,而不知道關閉作業何時完成或其狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
DeprecatedClone
已淘汰 - 請改用 fuchsia.unknown/Cloneable.Clone。
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
object |
server_end:Node
|
DeprecatedGetAttr
已淘汰 - 請改用 Node.GetAttributes。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
attributes |
NodeAttributes
|
DeprecatedGetFlags
[已淘汰 - 請改用新的 GetFlags 方法。]
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
flags |
OpenFlags
|
DeprecatedSetAttr
已淘汰 - 請改用 Node.UpdateAttributes。
要求
| 名稱 | 類型 |
|---|---|
flags |
NodeAttributeFlags
|
attributes |
NodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
DeprecatedSetFlags
[已淘汰 - 請改用新的 SetFlags 方法。]
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
描述
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
FileInfo
|
EnableVerity
為檔案啟用驗證功能 (永久),包括為檔案計算 Merkle 樹狀結構。在建構 Merkle 樹狀結構前強制清除,確保擷取快取資料。日後的讀取作業會根據計算出的 Merkle 樹狀結構進行驗證,寫入作業則會遭到拒絕。視檔案大小而定,這個方法可能需要一些時間才能完成。如要取消這個方法,可以關閉發出這個方法的連線。
這個方法需要 Rights.UPDATE_ATTRIBUTES 權限。如果檔案系統不支援 Verity,則傳回 ZX_ERR_NOT_SUPPORTED。如果檔案已啟用 fsverity,則傳回 ZX_ERR_ALREADY_EXISTS。此外,也會傳回讀取或清除檔案時可能發生的任何錯誤,例如 ZX_ERR_IO。
要求
| 名稱 | 類型 |
|---|---|
options |
VerificationOptions
|
回應
| 名稱 | 類型 |
|---|---|
payload |
File_EnableVerity_Result
|
GetAttributes
取得節點相關資訊。
節點的屬性應保持穩定,不受用於存取節點的特定通訊協定影響。
如果特定屬性不適用或不支援,檔案系統應將對應欄位留空。
query:指定要擷取哪些屬性的位元遮罩。伺服器不應傳回超過必要數量的資料。
attributes傳回的屬性。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
query |
NodeAttributesQuery
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetAttributes_Result
|
GetBackingMemory
取得代表這個檔案的 zx.Handle:VMO (如有),並具備要求的存取權。
實作項目不一定要實作 VMO 支援的檔案,因此這項要求可能會失敗。此外,實作可能僅支援特定旗標子集。用戶端應準備好備用行為,以防這項要求失敗。
如果用戶端未指定 PRIVATE_CLONE 或 SHARED_BUFFER,則實作項目可自由選擇傳回 VMO 的語意。
- 要求
flagsVmoFlags,指出所需的存取模式。
- 回應
vmo要求的 zx.Handle:VMO。
- error:zx.Status 值,表示失敗。
這個方法需要下列權限:
- 如果
flags包含 VmoFlags.READ,則為 Rights.READ_BYTES。 - 如果
flags包含 VmoFlags.WRITE,則為 Rights.WRITE_BYTES。 - 如果
flags包含 VmoFlags.EXECUTE,則為 Rights.EXECUTE。
要求
| 名稱 | 類型 |
|---|---|
flags |
VmoFlags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
File_GetBackingMemory_Result
|
GetExtendedAttribute
取得與這個節點指定屬性 name 相關聯的值。
屬性名稱長度上限為 MAX_ATTRIBUTE_NAME。不需遵循特定結構。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetExtendedAttribute_Result
|
GetFlags
在開啟/建立節點後,查詢適用於該節點的旗標。這個方法不需要任何權限。
請注意,適用於連線的最終旗標組合,可能與建立連線時使用的 fuchsia.io/Directory.Open 要求所指定的旗標不同:
Flags.PERM_INHERIT_*:僅在判斷連線權限時適用。Flags.PROTOCOL_*:只會顯示連線的通訊協定。Flags.FLAG_*:僅在開啟資源時適用,不屬於連線的一部分。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetFlags_Result
|
GetToken
取得權杖,以便日後識別這項連線。只要要求權杖的連線保持開啟,權杖就會持續有效。
這個方法不需要任何權限。請注意,權杖會識別連線,因此會攜帶此連線的權限資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetToken_Result
|
LinkInto
在 dst_parent_token 代表的目錄中,建立這個物件的連結,名稱為 dst。
dst 必須是已解析的物件名稱。如果字串中包含「/」,則會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要檔案系統支援此物件的最大權限集。如果是檔案,通常會是 Rights.READ_BYTES、Rights.WRITE_BYTES、Rights.GET_ATTRIBUTES 和 Rights.UPDATE_ATTRIBUTES。部分檔案系統也可能支援 Rights.EXECUTE 權限。權限不足會導致 ZX_ERR_ACCESS_DENIED。
如果這個物件沒有連結,且「不是」未命名的暫存物件 (使用 Flags.FLAG_CREATE_AS_UNNAMED_TEMPORARY 開啟的物件),則會失敗並傳回 ZX_ERR_NOT_FOUND。
如果是未命名的臨時物件,請使用 LinkInto 命名。成功完成後,物件會永久連結至檔案系統。要求未命名的暫存物件可連結,否則會失敗並顯示 ZX_ERR_NOT_FOUND。
這個方法不具備與 Directory::Link 方法相同的原子性屬性,也就是說,先呼叫 Open 再呼叫 LinkInto 不等於 Directory::Link,因為 LinkInto 不會防止來源重新命名或取消連結。
要求
| 名稱 | 類型 |
|---|---|
dst_parent_token |
Token
|
dst |
Name
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Linkable_LinkInto_Result
|
ListExtendedAttributes
為與這個節點相關聯的所有擴充屬性名稱建立疊代器。如果發生錯誤,系統會將錯誤做為疊代器要求管道上的墓誌銘傳回,然後關閉管道。
GetExtendedAttributes 可與上述任一名稱搭配使用,以擷取相關聯的值。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
iterator |
server_end:ExtendedAttributeIterator
|
OnOpen
如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器會積極產生事件。
指出開啟作業成功或失敗,並視需要描述物件。如果狀態為 ZX_OK,info 會包含物件的描述性資訊 (與 Describe 傳回的資訊相同)。
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
NodeInfoDeprecated?
|
OnRepresentation
如果 Flags.FLAG_SEND_REPRESENTATION 要求,伺服器會主動產生事件。這個事件會做為伺服器的第一則訊息傳送,且只會傳送一次。
有效變體對應至目標節點的協商通訊協定 (即這個管道目前使用的通訊協定)。此外,事件也會傳回輔助控制代碼和要求的屬性。
回應
| 名稱 | 類型 |
|---|---|
payload |
Representation
|
查詢
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
protocol |
vector<uint8>
|
QueryFilesystem
查詢檔案系統,取得檔案系統和/或磁碟區的詳細資料。如果目前的磁碟區有不同的設定,或儲存空間與檔案系統的其他部分分開計算,系統可能會回報該磁碟區的詳細資料,而非整個檔案系統的詳細資料。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
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.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_RemoveExtendedAttribute_Result
|
調整大小
將檔案大小縮減或增加至「length」位元組。
如果這項作業縮減了檔案大小,系統會捨棄多餘的結尾資料。如果這項作業會增加檔案大小,擴充區域會顯示為零。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
length |
uint64
|
回應
| 名稱 | 類型 |
|---|---|
payload |
File_Resize_Result
|
搜尋
移動下次叫用 Read 或 Write 時的偏移量。跳轉偏移量因檔案連線而異。
- 要求
originoffset的參考點。 - 要求
offset要跳轉的位元組數。
- 回應
offset_from_start調整後的跳轉偏移量 (從檔案開頭算起)。
這個方法不需要任何權限。
要求
| 名稱 | 類型 |
|---|---|
origin |
SeekOrigin
|
offset |
int64
|
回應
| 名稱 | 類型 |
|---|---|
payload |
File_Seek_Result
|
SetExtendedAttribute
將這個節點的指定屬性 name 值設為 value。
如果屬性名稱已存在,系統會更新該屬性。如果屬性不存在,系統會建立屬性。名稱不得包含空值位元組。如果發生這種情況,系統會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
value |
ExtendedAttributeValue
|
mode |
SetExtendedAttributeMode
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetExtendedAttribute_Result
|
SetFlags
設定開啟後要套用至這個節點的旗標。這個方法不需要任何權限。
目前僅支援 Flags.FILE_APPEND。呼叫這個方法時,如果不使用任何旗標,就會清除附加模式。
錯誤:
ZX_ERR_NOT_SUPPORTED:物件不支援這項功能或指定標記。ZX_ERR_INVALID_ARGS:指定了Flags.FILE_APPEND以外的flags。
要求
| 名稱 | 類型 |
|---|---|
flags |
Flags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetFlags_Result
|
同步
將節點的更新同步至基礎媒體 (如有)。
當檔案系統伺服器將相關更新排清至基礎媒體時,這個方法會傳回,但不保證基礎媒體已保留資訊,也不保證任何資訊已提交至硬體。用戶端可以使用 Sync,確保作業之間的順序。
這個方法不需要任何權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_Sync_Result
|
UpdateAttributes
更新節點資訊。
attributesattributes中有表格欄位,表示要更新對應的屬性。
如果節點不支援任何指定屬性,則傳回 ZX_ERR_NOT_SUPPORTED。
這個方法需要 Rights.UPDATE_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
payload |
MutableNodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_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
|
可連結
LinkInto
在 dst_parent_token 代表的目錄中,建立這個物件的連結,名稱為 dst。
dst 必須是已解析的物件名稱。如果字串中包含「/」,則會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要檔案系統支援此物件的最大權限集。如果是檔案,通常會是 Rights.READ_BYTES、Rights.WRITE_BYTES、Rights.GET_ATTRIBUTES 和 Rights.UPDATE_ATTRIBUTES。部分檔案系統也可能支援 Rights.EXECUTE 權限。權限不足會導致 ZX_ERR_ACCESS_DENIED。
如果這個物件沒有連結,且「不是」未命名的暫存物件 (使用 Flags.FLAG_CREATE_AS_UNNAMED_TEMPORARY 開啟的物件),則會失敗並傳回 ZX_ERR_NOT_FOUND。
如果是未命名的臨時物件,請使用 LinkInto 命名。成功完成後,物件會永久連結至檔案系統。要求未命名的暫存物件可連結,否則會失敗並顯示 ZX_ERR_NOT_FOUND。
這個方法不具備與 Directory::Link 方法相同的原子性屬性,也就是說,先呼叫 Open 再呼叫 LinkInto 不等於 Directory::Link,因為 LinkInto 不會防止來源重新命名或取消連結。
要求
| 名稱 | 類型 |
|---|---|
dst_parent_token |
Token
|
dst |
Name
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Linkable_LinkInto_Result
|
節點
節點會定義可在檔案系統中存取的實體最小介面。
複製
要求
| 名稱 | 類型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
關閉
終止連線。
呼叫 Close 後,用戶端不得傳送任何其他要求。
伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。
關閉管道的用戶端,在語意上應等同於呼叫 Close,而不知道關閉作業何時完成或其狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
DeprecatedClone
已淘汰 - 請改用 fuchsia.unknown/Cloneable.Clone。
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
object |
server_end:Node
|
DeprecatedGetAttr
已淘汰 - 請改用 Node.GetAttributes。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
attributes |
NodeAttributes
|
DeprecatedGetFlags
[已淘汰 - 請改用新的 GetFlags 方法。]
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
flags |
OpenFlags
|
DeprecatedSetAttr
已淘汰 - 請改用 Node.UpdateAttributes。
要求
| 名稱 | 類型 |
|---|---|
flags |
NodeAttributeFlags
|
attributes |
NodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
DeprecatedSetFlags
[已淘汰 - 請改用新的 SetFlags 方法。]
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
GetAttributes
取得節點相關資訊。
節點的屬性應保持穩定,不受用於存取節點的特定通訊協定影響。
如果特定屬性不適用或不支援,檔案系統應將對應欄位留空。
query:指定要擷取哪些屬性的位元遮罩。伺服器不應傳回超過必要數量的資料。
attributes傳回的屬性。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
query |
NodeAttributesQuery
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetAttributes_Result
|
GetExtendedAttribute
取得與這個節點指定屬性 name 相關聯的值。
屬性名稱長度上限為 MAX_ATTRIBUTE_NAME。不需遵循特定結構。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetExtendedAttribute_Result
|
GetFlags
在開啟/建立節點後,查詢適用於該節點的旗標。這個方法不需要任何權限。
請注意,適用於連線的最終旗標組合,可能與建立連線時使用的 fuchsia.io/Directory.Open 要求所指定的旗標不同:
Flags.PERM_INHERIT_*:僅在判斷連線權限時適用。Flags.PROTOCOL_*:只會顯示連線的通訊協定。Flags.FLAG_*:僅在開啟資源時適用,不屬於連線的一部分。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetFlags_Result
|
GetToken
取得權杖,以便日後識別這項連線。只要要求權杖的連線保持開啟,權杖就會持續有效。
這個方法不需要任何權限。請注意,權杖會識別連線,因此會攜帶此連線的權限資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetToken_Result
|
ListExtendedAttributes
為與這個節點相關聯的所有擴充屬性名稱建立疊代器。如果發生錯誤,系統會將錯誤做為疊代器要求管道上的墓誌銘傳回,然後關閉管道。
GetExtendedAttributes 可與上述任一名稱搭配使用,以擷取相關聯的值。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
iterator |
server_end:ExtendedAttributeIterator
|
OnOpen
如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器會積極產生事件。
指出開啟作業成功或失敗,並視需要描述物件。如果狀態為 ZX_OK,info 會包含物件的描述性資訊 (與 Describe 傳回的資訊相同)。
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
NodeInfoDeprecated?
|
OnRepresentation
如果 Flags.FLAG_SEND_REPRESENTATION 要求,伺服器會主動產生事件。這個事件會做為伺服器的第一則訊息傳送,且只會傳送一次。
有效變體對應至目標節點的協商通訊協定 (即這個管道目前使用的通訊協定)。此外,事件也會傳回輔助控制代碼和要求的屬性。
回應
| 名稱 | 類型 |
|---|---|
payload |
Representation
|
查詢
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
protocol |
vector<uint8>
|
QueryFilesystem
查詢檔案系統,取得檔案系統和/或磁碟區的詳細資料。如果目前的磁碟區有不同的設定,或儲存空間與檔案系統的其他部分分開計算,系統可能會回報該磁碟區的詳細資料,而非整個檔案系統的詳細資料。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
FilesystemInfo?
|
RemoveExtendedAttribute
移除指定的擴充屬性。
如果屬性不存在,則會傳回 ZX_ERR_NOT_FOUND。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_RemoveExtendedAttribute_Result
|
SetExtendedAttribute
將這個節點的指定屬性 name 值設為 value。
如果屬性名稱已存在,系統會更新該屬性。如果屬性不存在,系統會建立屬性。名稱不得包含空值位元組。如果發生這種情況,系統會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
value |
ExtendedAttributeValue
|
mode |
SetExtendedAttributeMode
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetExtendedAttribute_Result
|
SetFlags
設定開啟後要套用至這個節點的旗標。這個方法不需要任何權限。
目前僅支援 Flags.FILE_APPEND。呼叫這個方法時,如果不使用任何旗標,就會清除附加模式。
錯誤:
ZX_ERR_NOT_SUPPORTED:物件不支援這項功能或指定標記。ZX_ERR_INVALID_ARGS:指定了Flags.FILE_APPEND以外的flags。
要求
| 名稱 | 類型 |
|---|---|
flags |
Flags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetFlags_Result
|
同步
將節點的更新同步至基礎媒體 (如有)。
當檔案系統伺服器將相關更新排清至基礎媒體時,這個方法會傳回,但不保證基礎媒體已保留資訊,也不保證任何資訊已提交至硬體。用戶端可以使用 Sync,確保作業之間的順序。
這個方法不需要任何權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_Sync_Result
|
UpdateAttributes
更新節點資訊。
attributesattributes中有表格欄位,表示要更新對應的屬性。
如果節點不支援任何指定屬性,則傳回 ZX_ERR_NOT_SUPPORTED。
這個方法需要 Rights.UPDATE_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
payload |
MutableNodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_UpdateAttributes_Result
|
可開啟
Openable 定義了可開啟其他物件的節點。
開啟
開啟 (或建立) 相對於這個目錄的節點。如有任何錯誤,系統會透過 object 管道傳送墓誌銘來通知。
錯誤:
- 如果
path無效,則為ZX_ERR_BAD_PATH - 請參閱「標記」一節,瞭解可能根據
flags傳達的其他錯誤
要求
| 名稱 | 類型 |
|---|---|
path |
Path
|
flags |
Flags
|
options |
Options
|
object |
handle<channel>
|
可閱覽
閱讀
在跳轉偏移量讀取最多「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
|
符號連結
包含符號連結的 ['Node']。
複製
要求
| 名稱 | 類型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
關閉
終止連線。
呼叫 Close 後,用戶端不得傳送任何其他要求。
伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。
關閉管道的用戶端,在語意上應等同於呼叫 Close,而不知道關閉作業何時完成或其狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
DeprecatedClone
已淘汰 - 請改用 fuchsia.unknown/Cloneable.Clone。
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
object |
server_end:Node
|
DeprecatedGetAttr
已淘汰 - 請改用 Node.GetAttributes。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
attributes |
NodeAttributes
|
DeprecatedGetFlags
[已淘汰 - 請改用新的 GetFlags 方法。]
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
flags |
OpenFlags
|
DeprecatedSetAttr
已淘汰 - 請改用 Node.UpdateAttributes。
要求
| 名稱 | 類型 |
|---|---|
flags |
NodeAttributeFlags
|
attributes |
NodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
DeprecatedSetFlags
[已淘汰 - 請改用新的 SetFlags 方法。]
要求
| 名稱 | 類型 |
|---|---|
flags |
OpenFlags
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
描述
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Symlink_Describe_Result
|
GetAttributes
取得節點相關資訊。
節點的屬性應保持穩定,不受用於存取節點的特定通訊協定影響。
如果特定屬性不適用或不支援,檔案系統應將對應欄位留空。
query:指定要擷取哪些屬性的位元遮罩。伺服器不應傳回超過必要數量的資料。
attributes傳回的屬性。
這個方法需要 Rights.GET_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
query |
NodeAttributesQuery
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetAttributes_Result
|
GetExtendedAttribute
取得與這個節點指定屬性 name 相關聯的值。
屬性名稱長度上限為 MAX_ATTRIBUTE_NAME。不需遵循特定結構。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetExtendedAttribute_Result
|
GetFlags
在開啟/建立節點後,查詢適用於該節點的旗標。這個方法不需要任何權限。
請注意,適用於連線的最終旗標組合,可能與建立連線時使用的 fuchsia.io/Directory.Open 要求所指定的旗標不同:
Flags.PERM_INHERIT_*:僅在判斷連線權限時適用。Flags.PROTOCOL_*:只會顯示連線的通訊協定。Flags.FLAG_*:僅在開啟資源時適用,不屬於連線的一部分。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetFlags_Result
|
GetToken
取得權杖,以便日後識別這項連線。只要要求權杖的連線保持開啟,權杖就會持續有效。
這個方法不需要任何權限。請注意,權杖會識別連線,因此會攜帶此連線的權限資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_GetToken_Result
|
LinkInto
在 dst_parent_token 代表的目錄中,建立這個物件的連結,名稱為 dst。
dst 必須是已解析的物件名稱。如果字串中包含「/」,則會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要檔案系統支援此物件的最大權限集。如果是檔案,通常會是 Rights.READ_BYTES、Rights.WRITE_BYTES、Rights.GET_ATTRIBUTES 和 Rights.UPDATE_ATTRIBUTES。部分檔案系統也可能支援 Rights.EXECUTE 權限。權限不足會導致 ZX_ERR_ACCESS_DENIED。
如果這個物件沒有連結,且「不是」未命名的暫存物件 (使用 Flags.FLAG_CREATE_AS_UNNAMED_TEMPORARY 開啟的物件),則會失敗並傳回 ZX_ERR_NOT_FOUND。
如果是未命名的臨時物件,請使用 LinkInto 命名。成功完成後,物件會永久連結至檔案系統。要求未命名的暫存物件可連結,否則會失敗並顯示 ZX_ERR_NOT_FOUND。
這個方法不具備與 Directory::Link 方法相同的原子性屬性,也就是說,先呼叫 Open 再呼叫 LinkInto 不等於 Directory::Link,因為 LinkInto 不會防止來源重新命名或取消連結。
要求
| 名稱 | 類型 |
|---|---|
dst_parent_token |
Token
|
dst |
Name
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Linkable_LinkInto_Result
|
ListExtendedAttributes
為與這個節點相關聯的所有擴充屬性名稱建立疊代器。如果發生錯誤,系統會將錯誤做為疊代器要求管道上的墓誌銘傳回,然後關閉管道。
GetExtendedAttributes 可與上述任一名稱搭配使用,以擷取相關聯的值。
這個方法需要 Rights.READ_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
iterator |
server_end:ExtendedAttributeIterator
|
OnOpen
如果 OpenFlags.DESCRIBE 要求,FIDL 伺服器會積極產生事件。
指出開啟作業成功或失敗,並視需要描述物件。如果狀態為 ZX_OK,info 會包含物件的描述性資訊 (與 Describe 傳回的資訊相同)。
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
NodeInfoDeprecated?
|
OnRepresentation
如果 Flags.FLAG_SEND_REPRESENTATION 要求,伺服器會主動產生事件。這個事件會做為伺服器的第一則訊息傳送,且只會傳送一次。
有效變體對應至目標節點的協商通訊協定 (即這個管道目前使用的通訊協定)。此外,事件也會傳回輔助控制代碼和要求的屬性。
回應
| 名稱 | 類型 |
|---|---|
payload |
Representation
|
開啟
開啟 (或建立) 相對於這個目錄的節點。如有任何錯誤,系統會透過 object 管道傳送墓誌銘來通知。
錯誤:
- 如果
path無效,則為ZX_ERR_BAD_PATH - 請參閱「標記」一節,瞭解可能根據
flags傳達的其他錯誤
要求
| 名稱 | 類型 |
|---|---|
path |
Path
|
flags |
Flags
|
options |
Options
|
object |
handle<channel>
|
查詢
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
protocol |
vector<uint8>
|
QueryFilesystem
查詢檔案系統,取得檔案系統和/或磁碟區的詳細資料。如果目前的磁碟區有不同的設定,或儲存空間與檔案系統的其他部分分開計算,系統可能會回報該磁碟區的詳細資料,而非整個檔案系統的詳細資料。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
info |
FilesystemInfo?
|
RemoveExtendedAttribute
移除指定的擴充屬性。
如果屬性不存在,則會傳回 ZX_ERR_NOT_FOUND。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_RemoveExtendedAttribute_Result
|
SetExtendedAttribute
將這個節點的指定屬性 name 值設為 value。
如果屬性名稱已存在,系統會更新該屬性。如果屬性不存在,系統會建立屬性。名稱不得包含空值位元組。如果發生這種情況,系統會傳回 ZX_ERR_INVALID_ARGS。
這個方法需要 Rights.WRITE_BYTES 權限。
要求
| 名稱 | 類型 |
|---|---|
name |
ExtendedAttributeName
|
value |
ExtendedAttributeValue
|
mode |
SetExtendedAttributeMode
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetExtendedAttribute_Result
|
SetFlags
設定開啟後要套用至這個節點的旗標。這個方法不需要任何權限。
目前僅支援 Flags.FILE_APPEND。呼叫這個方法時,如果不使用任何旗標,就會清除附加模式。
錯誤:
ZX_ERR_NOT_SUPPORTED:物件不支援這項功能或指定標記。ZX_ERR_INVALID_ARGS:指定了Flags.FILE_APPEND以外的flags。
要求
| 名稱 | 類型 |
|---|---|
flags |
Flags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_SetFlags_Result
|
同步
將節點的更新同步至基礎媒體 (如有)。
當檔案系統伺服器將相關更新排清至基礎媒體時,這個方法會傳回,但不保證基礎媒體已保留資訊,也不保證任何資訊已提交至硬體。用戶端可以使用 Sync,確保作業之間的順序。
這個方法不需要任何權限。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_Sync_Result
|
UpdateAttributes
更新節點資訊。
attributesattributes中有表格欄位,表示要更新對應的屬性。
如果節點不支援任何指定屬性,則傳回 ZX_ERR_NOT_SUPPORTED。
這個方法需要 Rights.UPDATE_ATTRIBUTES 權限。
要求
| 名稱 | 類型 |
|---|---|
payload |
MutableNodeAttributes
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_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
|
STRUCTS
AdvisoryLockRange
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
origin |
SeekOrigin
|
檔案中用於計算偏移量的位置。 |
無預設值 |
offset |
int64
|
位元組範圍的開頭,以相對於起點的偏移量表示。如果 origin 為 SeekOrigin.START,則不得為負值。 |
無預設值 |
length |
int64
|
位元組範圍的長度 (以位元組為單位)。 如果長度為零,則位元組範圍會延伸至檔案結尾,無論檔案大小為何。 如果長度為負數,位元組範圍會包含 |
無預設值 |
AdvisoryLocking_AdvisoryLock_Response
<EMPTY>
DirectoryObject
<EMPTY>
Directory_CreateSymlink_Response
<EMPTY>
Directory_Rename_Response
<EMPTY>
Directory_Unlink_Response
<EMPTY>
EmptyStruct
用於需要空結構體的地方 (例如空聯集成員),避免建立新的結構體類型。
<EMPTY>
ExtendedAttributeIterator_GetNext_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
attributes |
vector<ExtendedAttributeName>:128
|
無預設值 | |
last |
bool
|
無預設值 |
FileObject 資源
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
event |
handle<event>?
|
選用事件,用於傳輸物件的可讀性或可寫性資訊。這個事件會轉送基礎物件的相關資訊,而非授予用戶端的能力:在不具備讀取能力的連線上,這個事件可能會發出「可讀取」信號。 這個事件可能會觀察到「 |
無預設值 |
stream |
handle<stream>?
|
預留位置,用於日後支援串流。 目前,伺服器不得在這個欄位中傳送控制代碼。 |
無預設值 |
File_Allocate_Response
<EMPTY>
File_EnableVerity_Response
<EMPTY>
File_GetBackingMemory_Response 資源
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
vmo |
handle<vmo>
|
無預設值 |
File_ReadAt_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
data |
Transfer
|
無預設值 |
File_Resize_Response
<EMPTY>
File_Seek_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
offset_from_start |
uint64
|
無預設值 |
File_WriteAt_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
actual_count |
uint64
|
無預設值 |
FilesystemInfo
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
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 |
array<int8, 32>
|
無預設值 |
FscryptPolicy
與加密目錄或檔案相關聯的 Fscrypt 加密政策。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
key_identifier |
array<uint8, 16>
|
16 位元組的主要金鑰 ID (對應至 |
無預設值 |
flags |
FscryptPolicyFlags
|
政策旗標 (對應至 |
無預設值 |
Linkable_LinkInto_Response
<EMPTY>
NodeAttributes
NodeAttributes 定義檔案系統節點的一般資訊。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
mode |
uint32
|
「mode」中說明的保護位元和節點類型資訊。 |
無預設值 |
id |
uint64
|
檔案系統專屬 ID。 |
無預設值 |
content_size |
uint64
|
節點大小,以位元組為單位。 |
無預設值 |
storage_size |
uint64
|
儲存節點所需的空間 (可能大於大小),以位元組為單位。 |
無預設值 |
link_count |
uint64
|
硬連結數量。 |
無預設值 |
creation_time |
uint64
|
建立時間 (建立後可手動更新),以世界標準時間 Unix 紀元起算的奈秒為單位。 |
無預設值 |
modification_time |
uint64
|
上次修改時間 (自 Unix 紀元起算,以世界標準時間的奈秒為單位)。 |
無預設值 |
NodeAttributes2
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
mutable_attributes |
MutableNodeAttributes
|
無預設值 | |
immutable_attributes |
ImmutableNodeAttributes
|
無預設值 |
Node_GetFlags_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
flags |
Flags
|
無預設值 |
Node_GetToken_Response resource
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
token |
Token
|
無預設值 |
Node_RemoveExtendedAttribute_Response
<EMPTY>
Node_SetExtendedAttribute_Response
<EMPTY>
Node_SetFlags_Response
<EMPTY>
Node_Sync_Response
<EMPTY>
Node_UpdateAttributes_Response
<EMPTY>
Readable_Read_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
data |
Transfer
|
無預設值 |
服務
<EMPTY>
SymlinkObject
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
target |
SymlinkTarget
|
無預設值 |
Writable_Write_Response
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
actual_count |
uint64
|
無預設值 |
列舉
AdvisoryLockType strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
閱讀 |
1 |
零或多個連線可以同時保留檔案的讀取鎖定。 |
WRITE |
2 |
最多只能有一個連線同時持有檔案的寫入鎖定。如果檔案設有寫入鎖定,就無法設定其他類型的鎖定。 |
解鎖 |
3 |
指定要解鎖的區域。 |
DirentType 彈性
類型:uint8
| 名稱 | 值 | 說明 |
|---|---|---|
不明 |
0 |
類型不明的 dirent。 |
目錄 |
4 |
代表目錄物件的 dirent。 |
BLOCK_DEVICE |
6 |
代表區塊裝置物件的 dirent。 |
檔案 |
8 |
代表檔案物件的 dirent。 |
SYMLINK |
10 |
符號連結。 新增:18
|
SERVICE |
16 |
代表服務物件的 dirent。 |
HashAlgorithm 彈性
類型:uint8
表示用於為啟用 fsverity 的檔案建構 Merkle 樹狀結構的雜湊演算法。
| 名稱 | 值 | 說明 |
|---|---|---|
SHA256 |
1 |
|
SHA512 |
2 |
SeekOrigin strict
類型:uint32
更新跳轉偏移量的參考點。請參閱 File.Seek。
這個列舉與 zx_stream_seek_origin_t 列舉相符。
| 名稱 | 值 | 說明 |
|---|---|---|
START |
0 |
從檔案開頭開始跳轉。跳轉偏移量會設為 |
目前 |
1 |
從檔案中的目前位置跳轉。跳轉偏移量會是目前的跳轉偏移量加上 |
結束 |
2 |
從檔案結尾開始搜尋。搜尋偏移量會是檔案大小加上 |
SetExtendedAttributeMode strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
SET |
1 |
無論擴充屬性是否存在,都設定其值。 |
建立 |
2 |
建立新的擴充屬性。如果已存在,則失敗。 |
取代 |
3 |
取代現有擴充屬性的值。如果不存在,則失敗。 |
WatchEvent strict
類型:uint8
| 名稱 | 值 | 說明 |
|---|---|---|
已刪除 |
0 |
表示監控的目錄已刪除。這個事件傳回的名稱會是 |
已新增 |
1 |
表示已在目錄中建立節點 (無論是新建立或移動)。 |
已移除 |
2 |
識別已從目錄中移除 (刪除或移動) 的節點。 |
EXISTING |
3 |
識別監控開始時,目錄中已存在的節點。 |
閒置 |
4 |
表示不會再傳送 |
TABLES
AdvisoryLockRequest
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
type |
AdvisoryLockType
|
要取得的鎖定類型。 如果缺少這個欄位,AdvisoryLock 方法會失敗,並傳回 ZX_ERR_INVALID_ARGS。 |
2 |
range |
AdvisoryLockRange
|
檔案中要鎖定的位元組範圍。 範圍可以延伸到檔案結尾之後,但不能延伸到檔案開頭之前。 如果沒有這個欄位,範圍預設為整個檔案。 |
3 |
wait |
bool
|
檔案是否應等待 AdvisoryLock 方法的回覆,直到可取得要求的鎖定。 如果沒有這個欄位,檔案就不會等待。 |
ConnectionInfo 資源
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
rights |
Rights
|
目前連線擁有的權限。注意: |
DirectoryInfo
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
attributes |
NodeAttributes2
|
目錄的要求屬性。只有在提出要求時,系統才會填入這項資訊。 新增:18
|
FileInfo 資源
節點檔案表示法的輔助資料。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
is_append |
bool
|
如果檔案是以附加模式開啟,則為 True。在附加模式中,搜尋偏移量會在每次寫入前移至結尾,這兩個步驟會以不可分割的方式執行。 |
2 |
observer |
handle<event>
|
選用事件,用於傳輸物件可讀性或可寫性的相關資訊。這個事件會轉送基礎物件的相關資訊,而非授予用戶端的能力:這個事件可能會在不具備讀取能力的連線上,發出「可讀取」信號。 如果符合下列條件,就會顯示這個事件:
這個事件可能會顯示 FileSignal 值。 |
3 |
stream |
handle<stream>
|
選用的串流物件,可用於讀取和寫入檔案,速度比 fidl 更快。 使用串流時,檔案的管道「必須」保持開啟。如果使用的串流物件已超過來源管道的生命週期,可能會導致失敗或非預期的結果。 |
4 |
attributes |
NodeAttributes2
|
檔案的要求屬性。只有在要求時才會填入這項資訊。 新增:18
|
ImmutableNodeAttributes
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
protocols |
NodeProtocolKinds
|
說明節點支援的表示法類型。注意:這不是連線時間協商的結果,協商結果會透過 |
2 |
abilities |
Abilities
|
說明節點支援的作業類型。注意:這與連線時使用的權限不同。 |
3 |
content_size |
uint64
|
節點大小,以位元組為單位。 |
4 |
storage_size |
uint64
|
儲存節點所需的空間 (可能大於大小),以位元組為單位。 |
5 |
link_count |
uint64
|
節點的硬連結數量。不得小於一。 |
6 |
id |
Id
|
節點的 ID。請參閱 Id。這個 |
7 |
change_time |
uint64
|
上次變更中繼資料的時間,以 Unix 紀元 (世界標準時間) 起算的奈秒數表示。 新增:18
|
8 |
options |
VerificationOptions
|
包含已啟用 Verity 檔案的驗證選項。 新增:HEAD
|
9 |
root_hash |
vector<uint8>:64
|
檔案的根雜湊。並非所有檔案系統都支援這項功能。 新增:HEAD
|
10 |
verity_enabled |
bool
|
如果這個檔案已啟用 Verity,則為 True。 新增:HEAD
|
MutableNodeAttributes
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
creation_time |
uint64
|
建立時間,以 Unix 紀元 (世界標準時間) 起算的奈秒數表示。 |
2 |
modification_time |
uint64
|
上次修改時間,以世界標準時間 Unix 紀元起算的奈秒數表示。 |
3 |
mode |
uint32
|
POSIX 相容性屬性。大多數檔案系統都不支援這些功能。如果需要,則必須單純儲存及擷取這些屬性 (例如做為擴充屬性),不得嘗試解讀 (例如執行權限檢查或特別處理裝置開啟作業)。 新增:18
|
4 |
uid |
uint32
|
新增:18
|
5 |
gid |
uint32
|
新增:18
|
6 |
rdev |
uint64
|
新增:18
|
7 |
access_time |
uint64
|
上次存取時間,以世界標準時間 Unix 紀元起算的奈秒數表示。請注意,如果只有這個屬性更新,伺服器不一定會更新這個值。 新增:18
|
8 |
casefold |
bool
|
支援 Casefold (不區分大小寫的檔案名稱) 這項屬性只能在空白目錄中變更,且會由後續建立的任何子目錄繼承。 撰寫本文時,只有 Fxfs 檔案系統支援這項功能。 新增:HEAD
|
9 |
selinux_context |
SelinuxContext
|
在 SELinux 實作環境中使用的擴充屬性「security.selinux」值。只有在值不超過 MAX_SELINUX_CONTEXT_ATTRIBUTE_LEN 個字元時,才能設定或傳回值,以限制回應的大小。如果目前在節點上找不到該值,回應欄位就不會包含在回應中。如果節點上有值,但伺服器因大小或實作而未在此傳回,則會傳回 如果嘗試使用 新增:HEAD
|
10 |
encryption_policy |
FscryptPolicy
|
支援 Fscrypt 加密政策。這項屬性只能在空白目錄中變更,且會由後續建立的任何子目錄繼承。每個目錄只能設定一次這項屬性。政策集會用於加密這個目錄及其子目錄的檔案內容和檔案名稱。撰寫本文時,只有 Fxfs 檔案系統支援這項功能。 新增:HEAD
|
NodeInfo
描述目標節點的資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
attributes |
NodeAttributes2
|
選項
開啟節點時可使用的選項。與旗標不同,這些選項是專為特定用途設計 (例如減少要求屬性時的往返延遲時間)。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
attributes |
NodeAttributesQuery
|
要求一組屬性,與 OnRepresentation 回應一併傳送。如果未設定 |
2 |
create_attributes |
MutableNodeAttributes
|
建立新物件時,要求以不可分割的方式設定一組屬性。如果未設定 |
SymlinkInfo
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
target |
SymlinkTarget
|
符號連結在伺服器上沒有任何意義,用戶端可以自由解讀目標。 |
2 |
attributes |
NodeAttributes2
|
符號連結的要求屬性。只有在要求時才會填入這項資訊。 |
UnlinkOptions
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
flags |
UnlinkFlags
|
VerificationOptions
用於啟用檔案驗證功能的一組選項。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
hash_algorithm |
HashAlgorithm
|
|
2 |
salt |
vector<uint8>:32
|
系統會在每個區塊雜湊前,在區塊前面加上 |
UNIONS
AdvisoryLocking_AdvisoryLock_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
AdvisoryLocking_AdvisoryLock_Response
|
|
2 |
err |
zx/Status
|
Directory_CreateSymlink_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Directory_CreateSymlink_Response
|
|
2 |
err |
zx/Status
|
Directory_Rename_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Directory_Rename_Response
|
|
2 |
err |
zx/Status
|
Directory_Unlink_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Directory_Unlink_Response
|
|
2 |
err |
zx/Status
|
ExtendedAttributeIterator_GetNext_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ExtendedAttributeIterator_GetNext_Response
|
|
2 |
err |
zx/Status
|
ExtendedAttributeValue 彈性 資源
擴充屬性的值類型。如果值小於 32768 位元組,則會內嵌。大於這個大小的值會寫入 VMO 緩衝區。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
bytes |
vector<uint8>:32768
|
|
2 |
buffer |
handle<vmo>
|
File_Allocate_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_Allocate_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
File_EnableVerity_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_EnableVerity_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
File_GetBackingMemory_Result strict resource
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_GetBackingMemory_Response
|
|
2 |
err |
zx/Status
|
File_ReadAt_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_ReadAt_Response
|
|
2 |
err |
zx/Status
|
File_Resize_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_Resize_Response
|
|
2 |
err |
zx/Status
|
File_Seek_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_Seek_Response
|
|
2 |
err |
zx/Status
|
File_WriteAt_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
File_WriteAt_Response
|
|
2 |
err |
zx/Status
|
Linkable_LinkInto_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Linkable_LinkInto_Response
|
|
2 |
err |
zx/Status
|
嚴格 資源 NodeInfoDeprecated
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
service |
Service
|
連線未提供通訊協定資訊。 |
2 |
file |
FileObject
|
連線會組成檔案。 |
3 |
directory |
DirectoryObject
|
連線會組成目錄。 |
4 |
symlink |
SymlinkObject
|
連線包含 ['Symlink']。 新增:18
|
Node_GetAttributes_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
NodeAttributes2
|
|
2 |
err |
zx/Status
|
Node_GetExtendedAttribute_Result strict resource
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ExtendedAttributeValue
|
|
2 |
err |
zx/Status
|
Node_GetFlags_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_GetFlags_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Node_GetToken_Result strict resource
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_GetToken_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Node_RemoveExtendedAttribute_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_RemoveExtendedAttribute_Response
|
|
2 |
err |
zx/Status
|
Node_SetExtendedAttribute_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_SetExtendedAttribute_Response
|
|
2 |
err |
zx/Status
|
Node_SetFlags_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_SetFlags_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Node_Sync_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_Sync_Response
|
|
2 |
err |
zx/Status
|
Node_UpdateAttributes_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_UpdateAttributes_Response
|
|
2 |
err |
zx/Status
|
Readable_Read_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Readable_Read_Response
|
|
2 |
err |
zx/Status
|
表示法彈性 資源
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
node |
NodeInfo
|
這個連線已協商 Node 通訊協定。 新增:27
|
2 |
directory |
DirectoryInfo
|
這個連線已協商 File 通訊協定。 |
3 |
file |
FileInfo
|
這個連線已協商 File 通訊協定。 |
4 |
symlink |
SymlinkInfo
|
這個連線已協商 Symlink 通訊協定。 新增:18
|
SelinuxContext 彈性
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
data |
vector<uint8>:256
|
|
2 |
use_extended_attributes |
EmptyStruct
|
Symlink_Describe_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
SymlinkInfo
|
|
3 |
framework_err |
internal
|
Writable_Write_Result strict
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Writable_Write_Response
|
|
2 |
err |
zx/Status
|
BITS
AllocateMode flexible
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
KEEP_SIZE |
1 | |
UNSHARE_RANGE |
2 | |
PUNCH_HOLE |
4 | |
COLLAPSE_RANGE |
8 | |
ZERO_RANGE |
16 | |
INSERT_RANGE |
32 |
FileSignal strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
內容可辨識 |
16777216 | 表示檔案已可供讀取。 |
WRITABLE |
33554432 | 表示檔案已可寫入。 |
標記彈性
類型:uint64
用於指定節點開啟方式的旗標。請注意,某些位元範圍會保留給特定用途:
- 位元 1-16:權限標記
PERM_*(例如 Flags.PERM_READBYTES)。 - 位元 17-32:POSIX 相容
O*旗標 (例如 Flags.FILE_TRUNCATE 或O_TRUNC)。 - 位元 33-64:Fuchsia 專屬旗標。
| 名稱 | 值 | 說明 |
|---|---|---|
PERM_CONNECT |
1 | 允許使用 PROTOCOL_SERVICE 開啟子節點。 |
PERM_READ_BYTES |
2 | 讀取檔案的位元組內容。 |
PERM_WRITE_BYTES |
4 | 將位元組內容寫入檔案。 |
PERM_EXECUTE |
8 | 執行檔案的位元組內容。 |
PERM_GET_ATTRIBUTES |
16 | 取得/查詢節點屬性。 |
PERM_UPDATE_ATTRIBUTES |
32 | 設定/更新節點屬性。 |
PERM_ENUMERATE |
64 | 列舉 (列出) 目錄項目。 |
PERM_TRAVERSE |
128 | 允許使用節點通訊協定開啟子節點。必須與 PERM_ENUMERATE 一併指定,否則要求會失敗,並傳回 |
PERM_MODIFY_DIRECTORY |
256 | 修改目錄項目 (建立/重新命名/連結/取消連結)。必須與 PERM_ENUMERATE 一併指定,否則要求會失敗並傳回 |
PERM_INHERIT_WRITE |
8192 | 盡可能沿用寫入權限 (PERM_WRITE_BYTES、PERM_UPDATE_ATTRIBUTES、PERM_MODIFY_DIRECTORY、/// PERM_ENUMERATE)。如果父項連線缺少上述任何權限,伺服器必須確保移除這個標記。如要瞭解會沿用的確切權限組合,請參閱 INHERITED_WRITE_PERMISSIONS。 |
PERM_INHERIT_EXECUTE |
16384 | 在可用時沿用執行權限 (PERM_EXECUTE)。如果父項連線缺少 PERM_EXECUTE,伺服器必須確保移除這個標記。 |
PROTOCOL_SERVICE |
4294967296 | 如果這是服務節點,請連線至基礎通訊協定。呼叫端必須判斷要使用的正確通訊協定 (例如根據路徑)。除非與 PROTOCOL_NODE 搭配使用,否則在要求中指定其他旗標會失敗,並傳回 |
PROTOCOL_NODE |
4194304 | 連線至基礎節點。優先順序高於其他通訊協定。如果指定其他 |
PROTOCOL_DIRECTORY |
524288 | 呼叫端接受 fuchsia.io/Directory 通訊協定。等同於 POSIX |
PROTOCOL_FILE |
8589934592 | 呼叫端接受 fuchsia.io/File 通訊協定。 |
PROTOCOL_SYMLINK |
17179869184 | 呼叫端接受 fuchsia.io/Symlink 通訊協定。 |
FLAG_SEND_REPRESENTATION |
1099511627776 | 呼叫端要求在成功時傳送 fuchsia.io/Node.OnRepresentation 事件。 |
FLAG_MAYBE_CREATE |
65536 | 如果物件不存在,則建立新物件,否則開啟現有物件。如果設定,則必須設定單一 |
FLAG_MUST_CREATE |
131072 | 如果物件不存在,則建立新物件,否則要求失敗並傳回 |
FLAG_CREATE_AS_UNNAMED_TEMPORARY |
34359738368 | 建立新的未命名暫時物件。在連結至檔案系統之前,物件都是暫時性的。如果使用
新增:HEAD
|
FILE_APPEND |
1048576 | 以附加模式開啟檔案。在所有寫入作業之前,搜尋指標會移至檔案結尾 (EOF)。等同於 POSIX |
FILE_TRUNCATE |
262144 | 開啟檔案時,將檔案截斷為零長度。等同於 POSIX |
FscryptPolicyFlags flexible
類型:uint8
設定 fscrypt 加密政策的旗標。
這些旗標與 Linux fscrypt UAPI 的位元組相容:每個成員的值都與 <linux/fscrypt.h> 中對應的 FSCRYPT_POLICY_FLAG* 常數相同,因此 Linux fscrypt_policy_v2 的 flags 欄位可以與這個類型相互轉換,不需經過轉譯。
| 名稱 | 值 | 說明 |
|---|---|---|
PAD_8 |
1 | 將加密檔案名稱填補至 8 位元組邊界 (如果未設定 PAD_8 和 PAD_16,檔案名稱會填補至 4 位元組邊界;如果同時設定 PAD_8 和 PAD_16,檔案名稱會填補至 32 位元組邊界)。 |
PAD_16 |
2 | 將加密檔案名稱填補至 16 位元組邊界。 |
DIRECT_KEY |
4 | 使用直接金鑰模式。 |
IV_INO_LBLK_64 |
8 | 對 inode 編號進行雜湊處理,並與 64 位元邏輯區塊編號 ( |
IV_INO_LBLK_32 |
16 | 對主金鑰和 inode 編號進行雜湊處理,並加上 32 位元邏輯區塊編號 ( |
ModeType strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
DO_NOT_USE |
2147483648 |
NodeAttributeFlags strict
類型:uint32
「flags」引數會指出用於更新節點的「attributes」欄位。
| 名稱 | 值 | 說明 |
|---|---|---|
CREATION_TIME |
1 | |
MODIFICATION_TIME |
2 |
NodeAttributesQuery 彈性
類型:uint64
| 名稱 | 值 | 說明 |
|---|---|---|
通訊協定 |
1 | |
能力 |
2 | |
CONTENT_SIZE |
4 | |
STORAGE_SIZE |
8 | |
LINK_COUNT |
16 | |
ID |
32 | |
CREATION_TIME |
64 | |
MODIFICATION_TIME |
128 | |
MODE |
256 | Posix 屬性。 新增:18
|
UID |
512 | 新增:18
|
GID |
1024 | 新增:18
|
RDEV |
2048 | 新增:18
|
ACCESS_TIME |
4096 | 新增:18
|
CHANGE_TIME |
8192 | 新增:18
|
選項 |
16384 | Verity 屬性。 新增:HEAD
|
ROOT_HASH |
32768 | 新增:HEAD
|
VERITY_ENABLED |
65536 | 新增:HEAD
|
CASEFOLD |
131072 | 支援 Casefold (不區分大小寫的檔案名稱)。如果設為 true,檔案查詢將不區分大小寫,但會保留大小寫。也就是說,「Foo」會逐字儲存,但可以開啟為「foo」、「fOO」等。大小寫摺疊是根據 Unicode 12 NFD 正規化和大小寫摺疊標準完成。 新增:HEAD
|
SELINUX_CONTEXT |
262144 | 要求 MutableNodeAttributes.selinux_context。詳情請參閱該欄位。 新增:HEAD
|
ENCRYPTION_POLICY |
524288 | 要求 MutableNodeAttributes.encryption_policy。 新增:HEAD
|
PENDING_ACCESS_TIME_UPDATE |
1048576 | 在 fuchsia.io/Node.GetAttributes 中查詢時,如果符合下列任一條件,系統會向檔案系統指出這個節點已存取,且正在等待存取時間更新:
如果符合上述任一條件,系統會先將 這與 Linux relatime 掛接相容。 新增 警告:如果在未事先存取檔案的情況下查詢,只要符合上述條件,節點的存取時間就會更新。並非所有檔案系統都支援這項功能。如果檔案系統不支援,系統會忽略查詢。 新增:HEAD
|
NodeProtocolKinds 彈性
類型:uint64
定義於 fuchsia.io/node-protocols.fidl
開啟節點時,節點可能有多個支援的表示法,即使節點可能具有固定的基礎身分。
目前,檔案是透過 File 通訊協定存取,並在使用 GET_REPRESENTATION 開啟時傳送 Representation.FileInfo。不過,我們日後可能會推出更複雜的 FileV2 通訊協定,或由專門核心物件支援、更有效率的 SuperFastFile。新用戶端可以指定 NodeProtocolKinds 中的對應位元,要求更進階的表示法,而現有用戶端則會繼續透過舊表示法與節點通訊。
NodeProtocolKinds 透過通訊協定協商的形式,實現向前相容性。
這些元素與 Representation 的成員有一對一的對應關係。
| 名稱 | 值 | 說明 |
|---|---|---|
連接器 |
1 | 節點的連接器表示法。 連線會使用 Node 或目標通訊協定,具體取決於開啟時使用的旗標。 |
目錄 |
2 | 節點的目錄表示法。 連線會使用目錄通訊協定。 |
檔案 |
4 | 節點的檔案表示法。 連線會使用檔案通訊協定。 |
SYMLINK |
8 | 節點的符號連結表示法。 連線會使用 Symlink 通訊協定。 新增:HEAD
|
OpenFlags strict
類型:uint32
已淘汰 - 請改用標記。
| 名稱 | 值 | 說明 |
|---|---|---|
RIGHT_READABLE |
1 | 可讀取目標物件。 |
RIGHT_WRITABLE |
2 | 可寫入目標物件。 |
RIGHT_EXECUTABLE |
8 | 連線可對應目標物件執行檔。 |
建立 |
65536 | 如果物件不存在,請建立物件。 |
CREATE_IF_ABSENT |
131072 | (使用 Create) 如果物件已存在,則失敗。 |
刪節 |
262144 | 請先截斷物件再使用。 |
目錄 |
524288 | Assert that the object to be opened is a directory. 如果目標物件不是目錄,則傳回錯誤。 |
APPEND |
1048576 | 在所有寫入作業前,跳轉至物件結尾。 |
NODE_REFERENCE |
4194304 | 開啟物件的參照,而非物件本身。只有下列旗標可以與
|
DESCRIBE |
8388608 | 要求將「OnOpen」事件傳送至介面要求。 如果成功開啟/複製,事件會包含非空值的 |
POSIX_WRITABLE |
134217728 | 指定這個旗標,即可要求 POSIX 相容性,以便處理寫入權限。目前,這項政策會影響 Open 期間的權限處理方式:
如果省略這個旗標,開啟時一律會使用要求的權限,如果要求的權限超過目前連線附加的權限,作業就會失敗,並顯示存取遭拒錯誤。 如果要求連線和要求的權限都是唯讀,伺服器可能會忽略標記,且不會轉送至下游。這是實作詳細資料,必須強制執行跨掛接點的階層權限,且不應影響用戶端的預期行為。 |
POSIX_EXECUTABLE |
268435456 | 指定這個旗標,即可要求 POSIX 相容性,以便處理執行權限。目前,這項設定會影響 Open 期間的權限處理方式:
如果省略這個旗標,開啟時一律會使用要求的權限,如果要求的權限超過目前連線附加的權限,作業就會失敗,並顯示存取遭拒錯誤。 如果要求連線和要求的權限都是唯讀,伺服器可能會忽略標記,且不會轉送至下游。這是實作詳細資料,必須強制執行跨掛接點的階層權限,且不應影響用戶端的預期行為。 |
NOT_DIRECTORY |
33554432 | Assert that the object to be opened is not a directory. 如果目標物件是目錄,則傳回錯誤。 |
CLONE_SAME_RIGHTS |
67108864 | 在複製期間使用時,新連線會繼承來源連線的權限,無論是檔案或目錄都一樣。否則,複製作業會嘗試使用要求的權限。同時傳遞任何 |
BLOCK_DEVICE |
16777216 | 以區塊裝置的形式開啟目標物件。 |
作業彈性
類型:uint64
定義於 fuchsia.io/rights-abilities.fidl
權利和能力背後的共同成員定義。部分作業可能僅適用於特定節點類型 (例如 Operations.MODIFY_DIRECTORY 僅適用於目錄)。
| 名稱 | 值 | 說明 |
|---|---|---|
連線 |
1 | 連線至目錄中的服務。 |
READ_BYTES |
2 | 讀取節點或其子項的位元組內容。 |
WRITE_BYTES |
4 | 寫入節點或其子項的位元組內容。 |
EXECUTE |
8 | 執行節點或其子項的位元組內容。 |
GET_ATTRIBUTES |
16 | 讀取節點和/或其子項的屬性。 |
UPDATE_ATTRIBUTES |
32 | 更新節點和/或其子項的屬性。 |
ENUMERATE |
64 | 讀取目錄中的節點清單。 |
TRAVERSE |
128 | 從目錄開啟節點。 注意:建議搭配 Rights.ENUMERATE 使用 (開啟子項即可探測目錄內容),例如使用 PERM_READABLE。如果需要嚴格隔離,請考慮改為轉送離散功能。 |
MODIFY_DIRECTORY |
256 | 修改目錄中的節點清單,例如建立、重新命名、連結/取消連結等... 注意:建議搭配 Rights.ENUMERATE 使用 (在建立節點時,可透過名稱衝突探測目錄內容),例如使用 PERM_WRITABLE。如果需要嚴格隔離,請考慮改為轉送離散功能。 |
UnlinkFlags flexible
類型:uint64
| 名稱 | 值 | 說明 |
|---|---|---|
MUST_BE_DIRECTORY |
1 | 如果設定,且物件不是目錄,取消連結就會失敗 (並顯示 ZX_ERR_NOT_DIR)。 |
VmoFlags strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
閱讀 |
1 | 要求 VMO 可讀取。 |
WRITE |
2 | 要求 VMO 可寫入。 |
EXECUTE |
4 | 要求 VMO 可執行。 |
PRIVATE_CLONE |
65536 | 需要基礎 VMO 的寫入時複製副本。如果無法複製 VMO,要求應會失敗。可能未隨附 私人複製項目至少會使用 在某些情況下,如果用戶端需要保證檔案的快照,可以使用 |
SHARED_BUFFER |
131072 | 要求 VMO 提供直接存取檔案基礎 VMO 內容的權限。如果無法提供這類 VMO,要求應會失敗。可能未隨附 即使要求 |
WatchMask strict
類型:uint32
| 名稱 | 值 | 說明 |
|---|---|---|
已刪除 |
1 | 由 |
已新增 |
2 | 由 |
已移除 |
4 | 由 |
EXISTING |
8 | 由 |
閒置 |
16 | 由 |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| DIRECTORY_PROTOCOL_NAME | fuchsia.io/Directory |
String |
已移除:29
|
| FILE_PROTOCOL_NAME | fuchsia.io/File |
String |
已移除:29
|
| FLAG_TEMPORARY_AS_NOT_LINKABLE | 指定這個物件無法連結。這項功能僅適用於建立臨時未命名物件的情境。如果不是這種情況,節點通訊協定會定義是否可連結 (即是否構成 注意:如未指定 之所以多載 新增:HEAD
|
||
| 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 |
單一檔案系統元件的長度上限 (以位元組為單位)。 已移除:HEAD 已淘汰:27
|
| 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_SELINUX_CONTEXT_ATTRIBUTE_LEN |
256
|
uint64 |
將 SELinux 內容做為屬性傳遞時的大小上限。 新增:HEAD
|
| MAX_TRANSFER_SIZE |
8192
|
uint64 |
使用位元組向量進行讀取/寫入作業時,允許的最大 I/O 大小。 |
| NODE_PROTOCOL_NAME | fuchsia.io/Node |
String |
已移除:29
|
| OPEN_FLAGS_ALLOWED_WITH_NODE_REFERENCE | 開啟節點參照時使用的旗標必須在這個遮罩內。 |
||
| OPEN_RIGHTS | 所有已知權利。 |
||
| PERM_EXECUTABLE | 以可執行檔開啟節點時,預期會有一組權限。 |
||
| PERM_READABLE | 以可讀取方式開啟節點時,預期會有的權限組合。 |
||
| PERM_WRITABLE | 以可寫入方式開啟節點時,預期會取得的一組權限。 |
||
| RW_STAR_DIR | 目錄權限別名 rw* 的別名 |
||
| RX_STAR_DIR | 目錄權限別名 rx* 的別名 |
||
| R_STAR_DIR | 目錄權限別名 r* 的別名 |
||
| SELINUX_CONTEXT_NAME | security.selinux |
String |
可透過 SELinux 內容屬性存取的擴充屬性名稱。 新增:HEAD
|
| SYMLINK_PROTOCOL_NAME | fuchsia.io/Symlink |
String |
已移除:29 已新增:18
|
| W_STAR_DIR | 目錄權限別名 w* 的別名 |
||
| X_STAR_DIR | 目錄權限別名 x* 的別名 |
別名
| 名稱 | 值 | 說明 |
|---|---|---|
| 能力 |
fuchsia.io/Operations |
能力是節點固有的屬性。指定支援哪些作業。 如果對不支援某項作業的節點叫用該作業,會導致 |
| ExtendedAttributeName |
vector[MAX_ATTRIBUTE_NAME] |
擴充屬性的名稱。不得包含任何空值位元組。除了上述限制和大小上限外,名稱沒有特定結構。 新增:18
|
| Id |
uint64 |
如果實作支援不重複節點 ID 的概念,則用於識別節點的類型。 唯一性保證用戶端通常會看到一個目錄樹狀結構,這是由多個支援實作執行個體組合而成的結果。ID 只在對應的執行個體內不重複。由於目錄 Proxy 會透明轉送,因此在 Fuchsia 上,這些邊界相當隱晦。用戶端在周遊目錄樹狀結構時,如果遇到來自不同備份執行個體的節點,通常會觀察到相同的 fuchsia.fs/FilesystemInfo.fs_id 欄位可用於區分不同備份執行個體的 ID。 |
| 名稱 |
string[MAX_NAME_LENGTH] |
節點名稱的類型,即單一路徑元件。例如: 不變量有效的節點名稱必須符合下列條件:
|
| 路徑 |
string[MAX_PATH_LENGTH] |
路徑是由一或多個元件組成的字串,以「/」分隔。例如: 不變量有效的路徑必須符合下列條件:
路徑應在用戶端轉換為標準形式。舉例來說,用戶端應先將 |
| 權利 |
fuchsia.io/Operations |
權限是連線專屬的屬性。這類政策會限制連線允許執行的作業,包括可能授予新連線的作業。 如果叫用作業時沒有對應的權限,即使節點不支援該作業,也會產生 |
| SymlinkTarget |
vector[MAX_PATH_LENGTH] |
|
| Token |
zx/Handle |
用於識別節點連線的類型。代表一項能力:參照具有相關權利的節點。 |
| 轉移 |
vector[MAX_TRANSFER_SIZE] |
用於讀取/寫入作業的位元組向量類型。 |