QueryInterface 的实现规则

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

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

本节将给出一些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.net/162911.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pr曲线 roc曲线_roc曲线与auc的含义

    pr曲线 roc曲线_roc曲线与auc的含义评价指标系列PR曲线查准率和查全率PR曲线绘制ROC曲线TPR,FPR插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入PR曲线AUC就是衡量学习器优劣的一种性能指标。从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得。查准率和查全率查准率,表示所有被预测为正类的样本(TP+F

    2022年10月20日
    3
  • 读书笔记-APUE第三版-(8)进程控制

    读书笔记-APUE第三版-(8)进程控制

    2021年11月13日
    34
  • 用python编写猴子吃桃问题_人工智能猴子摘香蕉

    用python编写猴子吃桃问题_人工智能猴子摘香蕉一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。2.1使用语义网络实现猴子摘香蕉的知识表示2.2用java实现猴子摘香蕉Monkey类:12345678910111213141516171

    2022年9月25日
    4
  • 内网渗透的步骤_内网渗透思路

    内网渗透的步骤_内网渗透思路0x00Preface内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当然也有一些基于漏洞的攻击。内网相关概念这里不再进行介绍,大家可以自行百度,诸如什么是域、域与工作组的区别、什么是DC、什么是AD等。当然,概念是生涩难懂的,结合实际环境会有助于理解。0x01信息收集systeminfo查看系统详细信息,如OS版本、补丁安装情况,可以根据这些信息筛选可利用的漏洞。netstart查看启动进

    2025年11月17日
    4
  • 公钥基础设施PKI_公钥基础设施pki由什么组成

    公钥基础设施PKI_公钥基础设施pki由什么组成2019独角兽企业重金招聘Python工程师标准>>>…

    2022年8月22日
    6
  • rabbitmq实际使用案例_沉默的螺旋案例

    rabbitmq实际使用案例_沉默的螺旋案例一.简单模式(队列–>交换机)yml配置:server:port:8088spring:rabbitmq:host:127.0.0.1port:5672username:guestpassword:guestpublisher-confirm-type:correlated#消息确认方式,通过correlated来确认(将来的消息中才会带correlation_id,只有通过correlation_

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号