您当前的位置: 首页 > 

小生叫安辰

暂无认证

  • 5浏览

    0关注

    105博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

鸿蒙源码分析(六十一)

小生叫安辰 发布时间:2021-10-06 22:50:00 ,浏览量:5

feature.c文件分析

接口相关使用文件

知识分享

Feature:开发功能时,需要实现的功能的生命周期接口。 IUnknown:基于IUnknown开发服务或功能的对外接口。 特征实施结构体的组成

struct FeatureImpl {
    Feature *feature;
    IUnknown *iUnknown;
};

这里的结构体有两个元素组成,一个是feature生命周期元素,另一个是iUnknown接口 这个文件主要功能就是一些接口的添加和获取

代码部分 1.SAMGR_AddInterface

函数功能:在生命周期添加一个对外接口

BOOL SAMGR_AddInterface(FeatureImpl *featureImpl, IUnknown *iUnknown)
{
    if (featureImpl == NULL || iUnknown == NULL || featureImpl->iUnknown != NULL) {
        return FALSE;
    }

    featureImpl->iUnknown = iUnknown;
    return TRUE;
}
2.SAMGR_DelInterface

函数功能:删除生命周期中的iunknown接口 函数实现:该函数直接传入一个生命周期,没个周期有且仅有一个iunknown接口,所以可以实现删除功能。函数最后返回值为删除的对象

//删除一个生命周期的接口
IUnknown *SAMGR_DelInterface(FeatureImpl *featureImpl)
{
    if (featureImpl == NULL) {
        return NULL;
    }
    IUnknown *iUnknown = featureImpl->iUnknown;
    featureImpl->iUnknown = NULL;
    return iUnknown;
}
3.SAMGR_GetInterface

函数功能:获取生命周期的iunknown接口

//获取接口
IUnknown *SAMGR_GetInterface(FeatureImpl *featureImpl)
{
    if (featureImpl == NULL) {
        return NULL;
    }
    return featureImpl->iUnknown;
}
4.SAMGR_IsNoInterface

函数功能:判断接口是否合法

//判断接口是否为空或者feature是否存在  
BOOL SAMGR_IsNoInterface(FeatureImpl *featureImpl)
{
    return (BOOL)(featureImpl == NULL || featureImpl->iUnknown == NULL);
}
5.FEATURE_CreateInstance

函数功能:创建一组实例

FeatureImpl *FEATURE_CreateInstance(Feature *feature)
{
    if (feature == NULL) {
        return NULL;
    }
    FeatureImpl *featureImpl = (FeatureImpl *)SAMGR_Malloc(sizeof(FeatureImpl));
    //申请相关空间
    if (featureImpl == NULL) {
        return NULL;
    }
    featureImpl->feature = feature;
    featureImpl->iUnknown = NULL;
    return featureImpl;
}
关注
打赏
1635606302
查看更多评论
立即登录/注册

微信扫码登录

0.2201s