# HiSysEvent查询指导 - [概述](#section279684125212) - [开发指导](#section315316761113) - [接口说明](#section03869128521) - [开发实例](#section14286111855212) ## 概述 HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事件,例如功耗部件可以通过该接口获取所需的系统事件进行业务分析。 ## 开发指导 ### 接口说明 **表 1** HiSysEvent查询接口 | 接口名称 | 描述 | | -------- | --------- | | bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack) | 接口功能:
  支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。

输入参数:返回值: | **表 2** QueryArg查询参数对象 | 属性名称 | 描述 | | -------- | --------- | | beginTime | long long int类型,用于指定查询事件的开始时间。 | | endTime | long long int类型,用于指定查询事件的结束时间。 | | maxEvents | int类型,用于指定查询返回事件查询的最多条数。 | **表 3** QueryRule查询规则对象 | 接口名称 | 描述 | | -------- | --------- | | QueryRule(const std::string& domain, const std::vector<std::string>& eventList) | 接口功能:查询规则构造函数,创建查询规则对象。

输入参数: | **表 4** HiSysEventQueryCallBack查询回调对象 | 接口名称 | 描述 | | -------- | --------- | | void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) | 接口功能:订阅事件查询中的回调。

输入参数:返回值:
  无。 | | void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total) | 接口功能:订阅事件查询完成的回调。

输入参数:返回值:
  无。 | ### 开发实例 C++接口实例。 1. 源代码开发: - 引入对应的头文件: hisysevent\_manager.h - 实现对应的查询回调接口: void HiSysEventQueryCallBack::OnQuery\(const ::std::vector<std::string>& sysEvent, const ::std::vector& seq\) void HiSysEventQueryCallBack::OnComplete\(int32\_t reason, int32\_t total\) - 在相应的业务逻辑里面调用查询接口: HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) ``` // 以下是查询所有系统事件的应用例子 #include "hisysevent_manager.h" #include namespace OHOS { namespace HiviewDFX { // 实现查询回调的接口 void HiSysEventToolQuery::OnQuery(const ::std::vector& sysEvent, const ::std::vector& seq) { for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) { std::cout << tmp << std::endl; }); } void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total) { return; } } // namespace HiviewDFX } // namespace OHOS // 调用查询接口获取HiSysEvent事件 std::shared_ptr queryCallBack = nullptr; try { queryCallBack = std::make_shared(); } catch (...) { // 智能指针获取失败处理 } if (queryCallBack != nullptr) { struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents); std::vector rules; HiSysEventManager::QueryHiSysEvent(args, rules, queryCallBack); } ``` 2. 编译设置: 在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。 ``` external_deps = [ "hisysevent_native:libhisyseventmanager", ] ```