• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 为什么Queryinterface说返回的IUnknown指针总是相同的?

为什么Queryinterface说返回的IUnknown指针总是相同的?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了queryinterface,queryinterface失败,src queryinterface,返回值为指针的函数,返回数组指针等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么Queryinterface说返回的IUnknown指针总是相同的 ?
描述:

为什么Queryinterface说返回的IUnknown指针总是相同的 ??????? 
HRESULT __stdcall QueryInterface (const IID&iid,void **ppv);  
为什么说总是返回IUnknown指针????不明,请教大家!谢谢 因为
我进到QueryInterface()函数中去看时,看到的是 
if(riid == IID_ISimpleMath) 
*ppv = static_cast <ISimpleMath * >(this); 
else if(riid == IID_IAdvancedMath) 
*ppv = static_cast <IAdvancedMath * >(this); 
else if(riid == IID_IUnknown) 
*ppv = static_cast <ISimpleMath * >(this); 
else { 
*ppv = 0; 
return E_NOINTERFACE; 
} 
而不是全是IUnknown指针,有的是ISimpleMath接口有的是IAdvancedMath接口,怎么说返回全是IUnknown指针呢?而且都没出现IUnknown指针,所以请大家指教,谢谢!!!


解决方案1:

因为ISimpleMath也是从IUnknown继承来的, IAdvanceMath也是从IUnknown继承来的, 所以把this指针cast到ISimpleMath即可, 如果Cast到IUnknown可能会出现二义错误.
COM要求对象返回的IUnknown在生命期中是不变的, 来确保对象的实体身份, 是COM要求的.

解决方案2:

楼主这句话理解错误了
这句话只是说每次用Queryinterface查询IUnknown接口,每次返回指针必须相同
并不是说每次都是返回IUnknown接口的指针

解决方案3:

参数返回的是相应接口的指针.


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何修改ATL自动生成的COM方法呢?比如QueryInterface,CreateInstence
  • 重写QueryInterface,AddRef,Release应该注意些什么?我这段代码怎么总是有问题。
  • 使用COM组件时,QueryInterface调用失败是什么原因
  • tempRs->QueryInterface__uuidof_Recordset,voidm_Recordset编译没错,vb调用报自动化错误
  • 在线等待关于queryinterface的问题
  • 关于QueryInterface,求助啊!
  • 奇怪:成功激活也能成功调用,为什么queryinterface查询第二个接口报告“拒绝访问”?
  • 为什么Queryinterface返回的IUnknown指针总是相同的
  • 求QueryInterface例子
  • 请问QueryInterface有什么用呢?

相关文章

  • 2017-06-04 COM+的远程调用?在线等!在线给分(先给100,不够再加)。
  • 2017-06-05 我怎么在vc里面写的一个单独的功能模块发布成dll,供net调用呀?
  • 2017-06-05 用TIMER还是另外开个线程?
  • 2017-06-05 怎么在线程中画图?在MDI中。ThreadFunc是CThreadPriorityView的静态成员变量!
  • 2017-06-05 如何获取系统中运行着的指定进程或窗口的图标?
  • 2017-06-05 从Excel读取文字(日文)写入文档显示乱码
  • 2017-06-05 CMimeMessage::AttachFile类64bit发送附件中文为乱码!在线求解
  • 2017-06-04 关于BHO的问题
  • 2017-06-04 求救VCAO
  • 2017-06-04 ActiveX控件和串口通讯的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何在窗体中添加插件播放wav格式的音乐?
    • 自己编写开发控件程序无法运行
    • 这样能用进程控制么???
    • 大家试一试11
    • 求分析word结构获取指定结构内容
    • WinExec怎么用啊????????
    • 自己写的DLL,测试时候老是找不到程序输入点
    • 编译时出现这种错误,怎么回事???
    • 怎样解决OLEinitializationfailed的问题?
    • 再问ActiveX的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有