zx_object_get_child
名称
object_get_child —— 给定具有子对象的内核对象,获取由内核对象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 的功能是查找由handle引用的对象的子对象,该对象具有由koid指定的内核对象id。 如果存在该对象,并且请求的权限rights不超过由handle指定的父对象的权限,则返回指定子对象的新句柄。
rights可以是ZX_RIGHT_SAME_RIGHTS,它表示权限等同于handle上的权限。
如果对象是进程类型,则可以通过此调用获得它包含的线程。
如果对象是任务类型,则可以通过此调用获取它的(直接)子任务及其包含的进程。
如果对象是资源类型,则可以通过此调用获取它的(直接)子资源。
权限
TODO(ZX-2399)
返回值
调用成功则返回ZX_OK,并通过out返回获取的子对象的句柄。
错误码
ZX_ERR_BAD_HANDLE:handle是无效句柄。
ZX_ERR_WRONG_TYPE:handle不是进程,任务或资源类型的句柄。
ZX_ERR_ACCESS_DENIED:handle缺少ZX_RIGHT_ENUMERATE权限,或rights指定了handle上不存在的权限。
ZX_ERR_NOT_FOUND:handle没有id为koid的内核子对象。
ZX_ERR_NO_MEMORY:由于内存不足导致的失败。 而用户空间无法处理这个(不太可能发生的)错误。 在将来的构建版本中,将不再出现此错误。
ZX_ERR_INVALID_ARGS:out是无效指针。
另见
handle_close, handle_duplicate, handle_replace, object_get_info.