• RSS订阅 加入收藏  设为首页
棋牌技术文章

网狐棋牌代码分析(十) 成也萧何败也肖何? IUnknowEx

时间:2015/1/18 21:49:10   作者:网狐6603   来源:大富翁科技   阅读:3060   评论:0
内容摘要:相关UML:看下某个查询接口的代码:////////////////////////////////////////////////////////////////////////////接口查询宏#define QUERYINTERFACE(Interface,Guid,dwQueryVer) ...

相关UML:

网狐棋牌代码分析(十)_成也萧何败也肖何?_IUnknowEx

看下某个查询接口的代码:
//////////////////////////////////////////////////////////////////////////

//接口查询宏
#define QUERYINTERFACE(Interface,Guid,dwQueryVer)                                        \
    if ((Guid==IID_##Interface)&&(InterfaceVersionCheck(dwQueryVer,VER_##Interface)))    \
        return static_cast<Interface *>(this);                                            

#define QUERYINTERFACE_IUNKNOWNEX(BaseInterface,Guid,dwQueryVer)                        \
    if ((Guid==IID_IUnknownEx)&&(InterfaceVersionCheck(dwQueryVer,VER_IUnknownEx)))        \
        return static_cast<IUnknownEx *>(static_cast<BaseInterface *>(this));            

//获取接口宏
#define GET_MYSELF_INTERFACE(Interface)                                                    \
    ((Interface *)QueryInterface(IID_##Interface,VER_##Interface))

#define GET_OBJECT_INTERFACE(Object,Interface)                                            \
    ((Interface *)Object.QueryInterface(IID_##Interface,VER_##Interface))

#define GET_OBJECTPTR_INTERFACE(pObject,Interface)                                        \
    ((pObject==NULL)?NULL:((Interface *)pObject->QueryInterface(IID_##Interface,VER_##Interface)))

//////////////////////////////////////////////////////////////////////////


//接口查询
void * __cdecl CEventService::QueryInterface(const IID & Guid, DWORD dwQueryVer)
{
    QUERYINTERFACE(IEventService,Guid,dwQueryVer);
    QUERYINTERFACE_IUNKNOWNEX(IEventService,Guid,dwQueryVer);
    return NULL;
}



由于这个函数的存在,是的接口传递的类型检查由编译期转到了运行期。
任意接口的传递都只需要传递一个IUnknowEx指针,然后接受方使用IUnknowEx去判断是否是自己需要的接口。
这个机制是好是坏,难说,,,


标签:棋牌 代码 分析 
欢迎加入VIP,【VIP售价:VIP会员只要258元】畅享商业程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:3297922246   [人格担保-本站注重诚信!]

☉购买建议E-mail:3297922246@qq.com   源码收购 E-mail:3297922246@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】

相关评论

本站提供的所有源码,均来源站长提供仅学习交流

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 3297922246@qq.com 将及时更正和删除! 

Copyright © 2008-2021 棋牌资源网,你身边的棋牌资源下载站  All Rights Reserved 

浙ICP备18994969号-1