前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QueryInterface 的实现规则

QueryInterface 的实现规则

作者头像
全栈程序员站长
发布2022-09-15 09:57:48
3370
发布2022-09-15 09:57:48
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

本节将给出一些QueryInterface既的所有实现都必须遵循的一些规则,以便客户能够获取关于组件的足够多的知识并对之施实一些控制和其他有用的处理。如果没有这些规则,是不可能编写出组件的,因为在这种情况下,QueryInterface的行为将是不确定的。具体来讲,这些规则是: QueryInterface返回的总是同一 IUnknown指针。 若客户曾经获取过某个接口,那么它将总能获取此接口。 客户可以再次获取已经拥有的接口。 客户可以返回到起始接口。 若能够从某个接口获取某特定接口,那么可以从任意接口都将可以获取此接口。

// 组件的实现只有一个IUnknown接口 BOOL SameComponents(IX * pIX,IY * pIY) { IUnknown * pI1 = NULL; IUnknown * pI2 = NULL; // 从PIX得到IUnknown接口 pIX -> QueryInterface(IID_IUnknown,( void ** ) & pI1);

// 从pIY得到IUnknown接口 pIY -> QueryInterface(IID_IUnknown,( void ** ) & pI2);

// 这两个指针相等吗? return pI1 == pI2;

};

// 可以再次获取已经拥有的接口 void GetInterAgain(IX * pIX) { IX * pIX2 = NULL; // 从IX查询IX接口 HRESULT hr = pIX -> QueryInterface(IID_IX,( void ** ) & pIX2); assert(SUCCEEDED(hr)); };

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162911.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档