摘要
建立受限狀態 VMO 並繫結至目前的執行緒。
宣告
#include <zircon/syscalls-next.h>
zx_status_t zx_restricted_bind_state(uint32_t options, zx_handle_t* out_vmo);
說明
建立 VMO 來容納 zx_restricted_state_t
。將 VMO 繫結至目前版本
讓後續對 zx_restricted_enter()
的呼叫能利用這個執行緒
進入/離開嚴格篩選模式後,還原/儲存受限模式狀態
傳回的 VMO (out_vmo
) 與
zx_vmo_create()
,某些作業不受支援,且可能會發生錯誤。
舉例來說,系統不支援調整子 VMO 的大小和建立子 VMO。對應、
以及透過 zx_vmo_read()
/zx_vmo_write()
讀取/寫入,
支援。
一次只能將一個受限狀態 VMO 繫結至執行緒。嘗試繫結其他 VMO 時,系統會取代已繫結的 VMO。
只有最後一個使用者帳號代碼關閉後,繫結的 VMO 才會刪除, 系統會移除最後一個使用者對應關係,然後發生下列其中一種情況:
已透過
zx_restricted_bind_state()
取代。並透過
zx_restricted_unbind_state()
明確移除。執行緒會遭到刪除。
與其他 VMO 一樣,一旦 VMO 對應完成,對應項目就會保留,因此呼叫端可以關閉句柄,並透過對應項目直接存取記憶體。
進入限制模式後,系統會載入 VMO 偏移 0 的 zx_restricted_state_t
,並相應地繼續執行。離開受限制模式後,執行緒的受限制狀態會儲存在 VMO 的偏移 0 處。
options 必須為零。
權限
呼叫端的工作政策必須允許 ZX_POL_NEW_VMO
。
錯誤
ZX_ERR_INVALID_ARGS
out_vmo 是無效的指標或 NULL,或是 options 是 0 以外的任何值。
ZX_ERR_NO_MEMORY
記憶體不足而導致失敗。使用者空間無法妥善處理這種 (異常) 錯誤。
在日後的版本中不會再發生這個錯誤。