zx_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)的子对象。如果存在此类对象,并且请求的权限不大于 handle 提供给父级的权限,则返回指定子对象的新句柄。

rights 可能为 ZX_RIGHT_SAME_RIGHTS,这将产生与标识名上相等的权利。

如果对象是一个 Process,则可以通过此调用获取其包含的 Threads

如果对象是 Job,则可以通过此调用获取其(直接)子 Jobs 及其包含的 Processes

权限

handle 必须具有 ZX_RIGHT_ENUMERATE

返回值

成功后,系统会返回 ZX_OK,并通过 out 返回所需子对象的句柄。

错误

ZX_ERR_BAD_HANDLE 句柄不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是 ProcessJobResource

ZX_ERR_ACCESS_DENIED handle 缺少右侧 ZX_RIGHT_ENUMERATErights 指定 handle 上不存在的权利。

ZX_ERR_NOT_FOUND 句柄没有内核对象 ID 为 koid 的子项。

ZX_ERR_NO_MEMORY 由于内存不足而失败。 用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。

ZX_ERR_INVALID_ARGS out 是无效的指针。

另请参阅