在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
二、结构体分析
//枚举要为启动引导服务而处理的消息的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;
总是有很多小伙伴反馈说:OpenHarmony开发不知道学习哪些技术?不知道需要重点掌握哪些OpenHarmony开发知识点? 为了解决大家这些学习烦恼。在这准备了一份很实用的鸿蒙全栈开发学习路线与学习文档给大家用来跟着学习。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植……等)技术知识点。
OpenHarmony 开发环境搭建:https://gitcode.com/HarmonyOS_MN/733GH/overview
《OpenHarmony源码解析》
搭建开发环境
系统架构分析
- 构建子系统
- 启动流程
- 子系统
- 分布式任务调度子系统
- 分布式通信子系统
- 驱动子系统
- ……