摘要
假設有一個包含子項物件的核心物件,請取得由提供的核心物件 ID 指定之子項的控制代碼。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_object_get_child(zx_handle_t handle,
uint64_t koid,
zx_rights_t rights,
zx_handle_t* out);
說明
zx_object_get_child()
會嘗試尋找由處理常式參照的物件子項,該處理常式具有由 koid 指定的核心物件 ID。如果這類物件存在,且要求的權利不大於父項的帳號代碼提供的值,系統會傳回對指定子項物件的新控制代碼。
rights 可能是 ZX_RIGHT_SAME_RIGHTS
,因此會使權利與帳號代碼中的對應權利相等。
如果物件是「Process」,此呼叫可獲取其包含的執行緒。
如果物件為 Job,則其 (立即) 子項 Job 及其包含的程序可透過此呼叫取得。
權限
handle 必須具有 ZX_RIGHT_ENUMERATE
。
傳回值
成功時,系統會傳回 ZX_OK
,並透過「out」傳回所需子項物件的控制代碼。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
處理常式不是「Process」、Job 或「Resource」。
ZX_ERR_ACCESS_DENIED
處理常式缺少正確的 ZX_RIGHT_ENUMERATE
或 rights 指定不存在於帳號代碼上的權利。
ZX_ERR_NOT_FOUND
處理常式沒有具備核心物件 ID koid 的子項。
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。
ZX_ERR_INVALID_ARGS
out 是無效指標。