在samgr_lite部分,用于向Samgr注册服务、特性和功能并由Samgr发现它们。文件位于distributedschedule_samgr_lite\interfaces\kits\samgr\samgr_lite.h。
一、宏定义分析
//启动引导服务,该服务由samgr使用,并由系统服务开发人员实现
#define BOOTSTRAP_SERVICE "Bootstrap"
//定义功能最大数目
#define MAX_SYSCAP_NUM 512
//定义功能名的最大长度
#define MAX_SYSCAP_NAME_LEN 64
DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到一下知识点。
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案)
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
二、结构体分析
//枚举要为启动引导服务而处理的消息的id
typedef enum BootMessage {
//表示核心系统服务已初始化的消息
BOOT_SYS_COMPLETED,
//表示系统和应用层服务已初始化的消息
BOOT_APP_COMPLETED,
//指示运行期间服务注册的消息
BOOT_REG_SERVICE,
//最大消息id数
BOOTSTRAP_BUTT
} BootMessage;
//表示系统能力管理类。该类用于注册和发现服务、特性和功能。
typedef struct SamgrLite {
//注册服务
//@service:需要注册的服务。
//@如果注册成功返回TRUE,如果注册失败返回FALSE
BOOL (*RegisterService)(Service *service);
//注销服务
//@name:待注销的服务名称,注意在取消注册服务之前,您必须取消其特性和功能
//注销成功返回未注册的服务对象。内存由调用者释放。如果注销失败,返回NULL。
Service *(*UnregisterService)(const char *name);
//注册特性
//@feature:需要注册的特性。
//如果注册成功返回TRUE,如果注册失败返回FALSE
BOOL (*RegisterFeature)(const char *serviceName, Feature *feature);
//注销特性
//@serviceName:要取消注册的服务名称。
//@featureName:待注销特性的名称,注意在注销特性之前,必须注销其功能。
//如果注销成功,返回未注册的特性对象。内存由调用者释放。如果注销失败,返回NULL
Feature *(*UnregisterFeature)(const char *serviceName, const char *featureName);
//为服务的默认特性注册API。
//@service:将注册其默认特性API的服务名称。
//@publicApi:需要注册的API。
//如果注册成功返回TRUE,如果注册失败返回FALSE
BOOL (*RegisterDefaultFeatureApi)(const char *service, IUnknown *publicApi);
//从服务的默认特性中注销API。
//@service:该服务的默认特性API将被取消注册。
//如果取消注册成功,返回未注册的函数对象。内存由调用者释放。如果注销失败,返回NULL
IUnknown *(*UnregisterDefaultFeatureApi)(const char *service);
//为特性注册API
//@service:要注册其API的服务名称。
//@feature:要注册API的特性的名称。
//@publicApi需要注册的API。
//@如果注册成功返回TRUE,如果注册失败返回FALSE
BOOL (*RegisterFeatureApi)(const char *service, const char *feature, IUnknown *publicApi);
//从特性中注销API
//@service:将注销其API的服务名称。
//@feature:该特性的API将被取消注册。
//@如果取消注册成功,返回未注册的函数对象。内存由调用者释放。如果注销失败,返回NULL
IUnknown *(*UnregisterFeatureApi)(const char *service, const char *feature);
//获取特定于默认特性的API
//@service:默认特性所属服务的名称
//如果操作成功返回IUnknown对象,如果操作失败,返回NULL
IUnknown *(*GetDefaultFeatureApi)(const char *service);
//获取特定于特性的API
//@service:该特性所属服务的名称
//@feature:要获取的特性的API名称
//@如果操作成功返回IUnknown对象,如果操作失败,返回NULL
IUnknown *(*GetFeatureApi)(const char *serviceName, const char *feature);
//您可以调用这个函数来添加系统功能
//@sysCap:系统能力名称
//如果这个函数被成功调用,返回EC_SUCCESS,否则返回错误代码
int32 (*AddSystemCapability)(const char *sysCap);
//可以调用此函数检查系统能力是否存在
//@sysCap系统能力名称
//如果系统能力存在返回TRUE,否则返回FALSE
BOOL (*HasSystemCapability)(const char *sysCap);
//获取所有可用的系统功能
//如果这个函数被成功调用,返回EC_SUCCESS,否则返回错误代码
//保存在sysCapNum中的可用系统能力数量和保存在sysCaps中的所有可用系统能力。
int32 (*GetSystemAvailableCapabilities)(char sysCaps[MAX_SYSCAP_NUM][MAX_SYSCAP_NAME_LEN], int32 *sysCapNum);
} SamgrLite;