网狐棋牌(十) 成也萧何败也肖何? IUnknowEx
相关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相关推荐
- 网狐棋牌经典版管理后台操作手册
网狐棋牌_经典版游戏 管理后台操作手册 管理平台概述: i. 使用说明: 本手册是提供给运营商阅读使用,帮助 ...
- 关于网狐棋牌6603源码的整理、编译和搭建
最近换工作,趁着有一段清闲时间,整理了一下网狐棋牌的源码,这份源码下载很久了,一直呆在硬盘.这次正好好好看看. 网狐的代码质量很高,流露出来的代码也比较完整,基本上都能编译通过.但是要真的搭建起来,还 ...
- 网狐棋牌(八) 异步引擎 和 网狐棋牌(九) 服务引擎概览
相关UML: 核心技术在于:在指定的线程中创建窗口,然后向窗口发送消息,在窗口消息处理中调用外部回调. ------------------------------------------------ ...
- 网狐棋牌(六) DataBaseEngine 和 网狐棋牌(七) CEventService
相关UML: 使用数据库引擎必须持有数据库引擎内部队列,实现数据库回调接口(用来处理数据库操作请求),然后结果投递到调度引擎队列. 理解网络狐棋牌,最重要是理解两个概念: 1,队列服务 2,接口的传递 ...
- 网狐棋牌游戏平台服务器架构设计分析
调用模型 模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Functio ...
- 网狐棋牌游戏平台服务器架构设计分析[转]
网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...
- 关于网狐棋牌的数据库
前不久放出了我自己整理的网狐棋牌的源码,下载的网友反应都不错,只是不少同学都找我要数据库,最近一直没时间,今天趁放假的时间把数据库放出来,分享给大家. 关于网狐棋牌6603源码的整理.编译和搭建 数据 ...
- 网狐棋牌框架内核通信设计原理剖析
关于网狐框架我使用和了解大致有5年多了,也深知里面的一些坑坑洼洼,其他人写的一些关于网狐框架分析的文章,大多都是贴上大量的代码,模块流程大致的解说,都是一些皮毛解说,并没有点出为什么这 ...
- 网狐棋牌客户端连接服务器修改方法6,网狐游戏服务器 客户端连接
网狐游戏服务器 客户端连接 内容精选 换一换 本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例.用户可以直接操作副本集主节点和备节点.主节点用于读写请求,您可以连接主节 ...
最新文章
- iOS 根据数组中的字典的value值进行排序
- NetBeans 时事通讯(刊号 # 57 - May 27, 2009)
- WIN10 右键 powershell 修改
- LeetCode Add Two Numbers
- ASP.NET URL重写实现IHttpHandler接口
- Jenkins【环境搭建 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
- django 后台日期_Django中的日期和时间格式 DateTimeField
- Windows2008安装组件命令行工具ServerManagerCmd用法介绍
- python用pip安装pygame_安装pygame和pip的问题以及过程
- weblogic的输出打印日志设置
- VMware vSphere 5.1 群集深入解析(二十八)- vSphere配置
- 网站性能提高之国外空间
- 数据仓库(2)数仓、大数据与传统数据库的区别
- Linux_Ubuntu快捷键截屏
- 人工神经网络通过调整,神经网络怎么调参数
- PyMOL简单操作图文介绍
- 融合通信(中移动)----微信的强力竞争者来了----阿冬专栏!!!
- 什么是Teardrop攻击?
- 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(1)自然语言处理基础
- 用linux命令操作手机,Linux基本操作