摘要
给定包含子对象的内核对象,获取由提供的内核对象 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)触发。如果
对象存在,并且请求的权利不高于所提供的权利
被 handle 传递给父对象时,指定子对象的新句柄是
返回。
rights 可以是 ZX_RIGHT_SAME_RIGHTS
,这样将产生同等权利
标识名上的标识名。
如果对象是一个 Process,则可以获取它包含的 Threads, 这场通话
如果对象为 Job,则其(直接)子 Job 和 Processes 该对象包含的内容可通过此调用获取。
权限
handle 必须具有 ZX_RIGHT_ENUMERATE
。
返回值
成功后,系统将返回 ZX_OK
,并通过 out 返回所需子对象的句柄。
错误
ZX_ERR_BAD_HANDLE
handle 不是有效的句柄。
ZX_ERR_WRONG_TYPE
handle 不是 Process、Job 或 Resource。
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 是无效的指针。