当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

组件对象模子的法则[VC/C++编程]

赞助商链接



  本文“组件对象模子的法则[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要

本文的目的是为利用和实施Microsoft的组件对象模子(COM)供应迅捷的参考.读者若想更好的理解什么是COM,以及躲藏在它的计划及体系中的动机,应当阅读组件对象模子的技术阐明书(MSDN库,技术阐明书).

法则1:必须实现Iunknown

假如一个对象没有至少实现一个最小程度为IUnknown的接口,那它就不是Microsoft的组件对象模子(COM).

接口计划法则

接口必须直接或间接地从IUnknown担当.

接口必须有唯一的辨认(IID).

接口是不变的.一旦分配和公布了IID,接口定义的任何因素都不能被改变.

接口的成员函数应当有HRESULT范例的返回值,使远端构造可报告远程历程调用(RPC)错误的情形.

接口成员函数的字符串参数应当是Unicode.

实现 IUnknown

对象的同一性.这要求对任何特定IUnknown接口的给定对象实例的QueryInterface调用返回相同的物理指针变量.这招致了所谓的两个接口的QueryInterface(IID_IUnknown, ...)和后果的对比,以肯定它们能否为同一对象(COM对象同一性).

静态接口的设置.任何经过QueryInterface来拜候对象的接口的设置,必须是静态而不是动态的.也就是说,假定一旦QueryInterface得到了一个给定的IID,那么它老是对相同的对象(除非有意想不到情形)调用,假定QueryInterface不能得到一个给定的IID,那么随后对相同IID的对象调用一定会失利.

对象完好性.关于可处理的接口设置,必须有反身性,对称性和过渡性.即给定代码以下:

IA * pA = (some function returning an IA*);
IB * pB = NULL;
HRESULT hr;
hr = pA->QueryInterface(IID_IB,&pB); // line 4
Symmetric: pA->QueryInterface(IID_IA, ...) must succeed (a>>a)
Reflexive: If, in line 4, pB was successfully obtained, then
pB->QueryInterface(IID_IA, ...)
must succeed (a>>b, then b>>a).
Transitive: If, in line 4, pB was successfully obtained, and we do
IC * pC = NULL;
hr = pB->QueryInterface(IID_IC, &pC); //Line 7
and pC is successfully obtained in line 7,then
pA->QueryInterface(IID_IC, ...)
must succeed (a>>b, and b>>c,then a>>c).

最小参考服务大小.我们需求实现AddRef来保护一个服务台,它充足大以便支持给定对象的全部接口的2 31 –1有超卓的整体指导服务.一个32-位的无标记整型数满意要求.

Release并不意味着失利.假定客户想知道关于资源已被释放等情形,就必须在调用Release之前利用一些对象接口中的较高的语义.


  以上是“组件对象模子的法则[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 组件对象模子的法则
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .