鸿蒙源码分析(六十一)

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;
}

猜你喜欢

转载自blog.csdn.net/m0_46976252/article/details/120629719