相关UML:

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

//

//接口查询宏
#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去判断是否是自己需要的接口。
这个机制是好是坏,难说,,,

网狐棋牌(十) 成也萧何败也肖何? IUnknowEx相关推荐

  1. 网狐棋牌经典版管理后台操作手册

    网狐棋牌_经典版游戏 管理后台操作手册                                   管理平台概述: i.             使用说明: 本手册是提供给运营商阅读使用,帮助 ...

  2. 关于网狐棋牌6603源码的整理、编译和搭建

    最近换工作,趁着有一段清闲时间,整理了一下网狐棋牌的源码,这份源码下载很久了,一直呆在硬盘.这次正好好好看看. 网狐的代码质量很高,流露出来的代码也比较完整,基本上都能编译通过.但是要真的搭建起来,还 ...

  3. 网狐棋牌(八) 异步引擎 和 网狐棋牌(九) 服务引擎概览

    相关UML: 核心技术在于:在指定的线程中创建窗口,然后向窗口发送消息,在窗口消息处理中调用外部回调. ------------------------------------------------ ...

  4. 网狐棋牌(六) DataBaseEngine 和 网狐棋牌(七) CEventService

    相关UML: 使用数据库引擎必须持有数据库引擎内部队列,实现数据库回调接口(用来处理数据库操作请求),然后结果投递到调度引擎队列. 理解网络狐棋牌,最重要是理解两个概念: 1,队列服务 2,接口的传递 ...

  5. 网狐棋牌游戏平台服务器架构设计分析

    调用模型 模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Functio ...

  6. 网狐棋牌游戏平台服务器架构设计分析[转]

    网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...

  7. 关于网狐棋牌的数据库

    前不久放出了我自己整理的网狐棋牌的源码,下载的网友反应都不错,只是不少同学都找我要数据库,最近一直没时间,今天趁放假的时间把数据库放出来,分享给大家. 关于网狐棋牌6603源码的整理.编译和搭建 数据 ...

  8. 网狐棋牌框架内核通信设计原理剖析

            关于网狐框架我使用和了解大致有5年多了,也深知里面的一些坑坑洼洼,其他人写的一些关于网狐框架分析的文章,大多都是贴上大量的代码,模块流程大致的解说,都是一些皮毛解说,并没有点出为什么这 ...

  9. 网狐棋牌客户端连接服务器修改方法6,网狐游戏服务器 客户端连接

    网狐游戏服务器 客户端连接 内容精选 换一换 本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例.用户可以直接操作副本集主节点和备节点.主节点用于读写请求,您可以连接主节 ...

最新文章

  1. iOS 根据数组中的字典的value值进行排序
  2. NetBeans 时事通讯(刊号 # 57 - May 27, 2009)
  3. WIN10 右键 powershell 修改
  4. LeetCode Add Two Numbers
  5. ASP.NET URL重写实现IHttpHandler接口
  6. Jenkins【环境搭建 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
  7. django 后台日期_Django中的日期和时间格式 DateTimeField
  8. Windows2008安装组件命令行工具ServerManagerCmd用法介绍
  9. python用pip安装pygame_安装pygame和pip的问题以及过程
  10. weblogic的输出打印日志设置
  11. VMware vSphere 5.1 群集深入解析(二十八)- vSphere配置
  12. 网站性能提高之国外空间
  13. 数据仓库(2)数仓、大数据与传统数据库的区别
  14. Linux_Ubuntu快捷键截屏
  15. 人工神经网络通过调整,神经网络怎么调参数
  16. PyMOL简单操作图文介绍
  17. 融合通信(中移动)----微信的强力竞争者来了----阿冬专栏!!!
  18. 什么是Teardrop攻击?
  19. 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(1)自然语言处理基础
  20. 用linux命令操作手机,Linux基本操作

热门文章

  1. 日志规范之为什么要使用SLF4J
  2. IDEA与tomcat相关配置
  3. web.xml文件中可以配置哪些内容?
  4. JavaScript中替换字符串中的所有小数点
  5. mysql explain实践
  6. 210322阶段三QT事件循环及opencv图像处理
  7. Nginx 搭建图片缓存服务器-转
  8. 配置httpd虚拟主机
  9. 配置Hyper-V Server 资源计量
  10. 【转载】JAVA内存模型和线程安全