zx_object_get_child


英文原文快照


名称

object_get_child —— 给定具有子对象的内核对象,获取由内核对象id指定的子对象的句柄。

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_object_get_child(zx_handle_t handle, uint64_t koid,
  3. 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_HANDLEhandle是无效句柄。

ZX_ERR_WRONG_TYPEhandle不是进程任务资源类型的句柄。

ZX_ERR_ACCESS_DENIEDhandle缺少ZX_RIGHT_ENUMERATE权限,或rights指定了handle上不存在的权限。

ZX_ERR_NOT_FOUNDhandle没有id为koid的内核子对象。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。 而用户空间无法处理这个(不太可能发生的)错误。 在将来的构建版本中,将不再出现此错误。

ZX_ERR_INVALID_ARGSout是无效指针。

另见

handle_close, handle_duplicate, handle_replace, object_get_info.