• 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 > 为什么我的对象的接口只有在dual情况下,才能在跨套间marshal

为什么我的对象的接口只有在dual情况下,才能在跨套间marshal

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

佚名通过本文主要向大家介绍了marshal,marshal是什么意思,c marshal,alice marshal,field marshal等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么我的对象的接口只有在dual情况下,才能在跨套间marshal
描述:

[
object,
uuid(...),
pointer_default(unique),
library_block
]
__interface IBasePlayer : IUnknown {
...
}
实现此接口的对象为aparment模型,在MTA中创建这个对象并申请IUnknown可以成功,但是申请IBasePlayer就失败,返回E_FAIL。把IBasePlayer加上dual属性,就可以MTA中创建对象并申请IBasePlayer,这是为什么?难道自定义接口不是双接口就不能跨套间marshal了?


解决方案1:

你的对象是aparment,而激活线程进入了一个MTA,这种情况下,对象会在STA中创建,并在MTA中生成一个代理,MTA中访问对象实际是访问代理,所以是跨套间访问。dual属性带有oleautomation的性质,会使用通用列集器,所以不会有问题,但是不使用dual或oleautomation属性的接口需要组件有自己的代理DLL,如果代理DLL制作或使用不正确,在跨套间访问时就会出现错误。


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

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

  • 请问CoMarshalInterface是根据什么来确定是否要为一个对象建立一个存根管理器
  • IMarshal
  • 请教专家被包容和被聚合时是否需要列集Marshal的问题
  • 是否可以通过CoMarshalInterThreadInterfaceInStream获得从另外一个线程产生的接口?
  • CoMarshalInterThreadInterfaceInStream传递一个特殊的IDispatch
  • 跨套间marshal组件指针,用其返回其他组件对像出错!
  • 跨套间marshal来的对像指针查地址不为空,但是
  • 有关CoGetInterfaceAndReleaseStreamunmarshal的问题
  • CoMarshalInterThreadInterfaceInStream只能用于实现了IDispatch的组件?
  • 手工Marshal不成功,函数调用hang住了请帮我看看

相关文章

  • 2017-06-04 急~向熟悉ACTIVCEX技术,并且做过cab包自动下载的朋友请教个问题.
  • 2017-06-05 我用CreateProcess创建了一个进程用来执行另外一个控制台程序,但一运行就会死掉!
  • 2017-06-05 findwindow函数问题
  • 2017-06-05 我在VC60里面做了个动态库,想在其它程序中调用该动态库中的对话框,始终不出来,怎么回事啊?
  • 2017-06-05 问一个很基础的问题,关于多线程?
  • 2017-06-05 如何处理异常,各位请进
  • 2017-06-05 VC中使用VB编写的ActiveXControl
  • 2017-06-05 CStringArray为什么不能作为参数传递给DLL?
  • 2017-06-05 我做了一个系统钩子挂接CreatePrecoss,但程序运行的时候报错误不知道哪位高人手上有现成的代码,能发一份给我吗
  • 2017-06-05 在开发sudoku游戏,请给一些指点和建议(强烈希望数学好一点的朋友给帮助)!谢谢!

文章分类

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

最近更新的内容

    • 关闭网页内广告的问题
    • 动态链接到MFC的规则DLL,只要给出回复就给分!!!!!
    • 怎么样让除了IE以外的浏览器加在BHO
    • 高分送上!!!请问谁有《Windows高级编程指南》JeffreyRichter编著,小弟有一个问题。
    • 一个关于DirectShow的问题!
    • 多线程问题??????
    • 请问一下如何在组件中访问数据库和使用MFC
    • 未知发行商去掉
    • 我要在com组件里面嵌套进另外一个com组件,要注意些什么问题?(高分)
    • 对象不支持此属性或方法

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

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