COM 技术内幕学习之二 (接口)

COM组件技术书籍《COM技术内幕》详解 COM(Component Object Model)技术体系的核心在于“接口驱动开发”理念。接口是COM对象对外暴露的契约,定义了对象能够执行的操作集合,而接口指针则是访问这些操作的唯一方式。本章将深入探讨COM接口的定义方式、接口指针的使用机制,以及接口调用过程中的基础错误处理与设计规范,为构建高可维护性、可扩展性的COM组件提供技术支撑。COM接口通过一个唯一的接口标识符(IID)来区分。每个接口必须继承自IUnknown接口,并定义一组方法。 阅读详情

一、接口

1、C++接口 (导出函数)

2、DLL接口 (成员函数集)

3、COM接口 (包含一个函数指针数组的内存结构,用抽象基类表示)

二、优点

1、可复用的软件架构 (只要接口不变,应用程序不需进行任何改变)

2、隐藏实现细节

三、特性

1、必须继承IUnkown抽象基类 (本身也是抽象类)

2、一个组件可以包含多个接口 (用多重继承实现)

3、函数声明约定

使用标准调用约定__stdcall(Pascal),由函数自身负责清空栈空间,可以减少生成代码量,win32 API使用的也是这种调用方式;C/C++调用约定__cdecl,由调用方负责清空栈空间,变参函数使用这一调用方式。

四、澄清概念

1、类并非组件

一个组件可能对应很多类,也可能没有类,用c实现的COM就没有类

2、接口并不是都被继承的

一个组件类,不一定非要实现所有的接口,一个接口可以用一个类来实现,在组件类中只需要用这个类的指针就可以。但是用一个类来实现所有的接口,比较简单,也容易理解,使C++开发更自然。

3、命名冲突 (接口函数名称相同)

解决方法:每个接口用一个类实现;尽量不用相同名称的函数

4、客户同接口的连接不是通过函数名称来建立的,而是通过访问它在内存块中的位置来完成的。

五、接口

1、接口不变性

2、接口的多态

3、接口为什么用抽象基类来实现?(内存结构)

4、实现多个接口的组件类的内存结构?(第一个接口vbtl和类本身的vbtl一致,第二个不一样)

深入理解COM技术:电子版PDF教程 本文还有配套的精品资源,点击获取 简介:COM是微软提出的组件对象模型,它允许不同应用程序间交互与组件重用,在Windows环境下是构建可重用软件组件的基础。《深入理解COM技术:电子版PDF教程》将深入探讨COM的基本原理、接口、组件注册、DLL与COM的关系、COM对象的生命周期管理、线程模型、类型库和错误处理等关键知识点,以提升Windows平台软件开发能力。 ... 阅读详情

相关推荐

从浅入深学习pascal编程技术(全27).rar

从浅入深掌握pascal编程技术.第一节 从浅入深掌握pascal编程技术.第二节 ... ... 从浅入深掌握pascal编程技术.第二十七节

域格NB模组三组uart串口通信

uart相关

chen_x_x的博客 1133

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

使用串口模拟工具进行串口程序开发调试

本文由小李专栏原创,转载需注明出处:【http://blog.youkuaiyun.com/softwave/article/details/8907599】       最近在做一个项目,要求使用Java对磅房的小磅数据进行读取,这就要求使用Java与串口进行通信。串口的Java代码已经开发完毕,但又不能总在生产现场调试程序,所以如何在自己的笔记本电脑上模拟串口数据就成了当务之急。托Google的福,

小李专栏 1万+

在 Mac OS 上编译 WebRTC 教程

在 Mac OS 上编译 WebRTC 教程

iShare_Carlos的博客 1249

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6273

Lazarus开发串口通信

Lazarus开发串口通信 文章出处:sujic2006 发布时间: 2011/08/26 | 1206 次阅读 | 1次推荐 | 0条留言 每天新产品 时刻新体验 相信品牌的力量 专业PCB打样工厂,24小时加急出货     Lazarus的设计目标是应用Free Pascal,所以所有凡是Free Pascal能运行的平台,Lazarus都可以运行。最新版本能运行于Linux,Win32和

Bingo 3042

西门子TM PosInput1模块SSI编码器配置与速度测量实战

本文详细介绍了西门子TM PosInput1模块配置SSI绝对值编码器的实战步骤,涵盖硬件组态、工艺对象配置、编程实现与速度测量优化。重点解析了高分辨率编码器的数值处理技巧和常见调试问题,帮助工程师快速实现高精度位置与速度检测,提升自动化项目效率。

emacs5lisp的博客 340

COM学习笔记三四《COM技术内幕》--接口和QueryInterface函数

实现了§2和§3的简单的程序,这些程序并不是完全意义上的COM程序。§2 —— IFACE.CPP代码清单: // //Iface.cpp // // #include #i

dengrk的专栏 722

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例)

本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。

n4o5p6q7r的博客 427

【AI助力科研】不看一篇文献,手把手教你用chatGPT写文献综述!

这篇文章以【AI助力科研】为题,介绍了如何利用ChatGPT编写文献综述的方法。作者通过详细的指导,展示了不需要阅读大量文献,只需依靠ChatGPT模型即可完成文献综述的过程。该方法旨在提高科研工作者的效率,减少阅读负担,并且能够生成具有逻辑性和准确性的文献综述。

研究方向//图像视频处理/信号算法/红外无损检测/数值仿真/机器学习/优化算法/python/matlab 2万+

《COM技术内幕学习笔记》

《COM技术内幕学习笔记》说是学习笔记实际上是文中一些,自己觉得重要的地方的摘录。。觉得写的很不错。最近一段时间。自己接触到的一个有关COM 思想的东西。所以找了这本书来看看。顺便摘录其中的一些东西。和大家一起学习。欢迎转载。唯一要求是请注明出处和作者。共同努力吧。作者:苦孩子blog地址:http://blog.youkuaiyun.com/kuhaizi对com来说,接口是一个包含一个函数指针数组的内存结

kuhaizi 1755

AI Agent Harness内容审核:生成内容合规

在过去的几年里,生成式人工智能(Generative AI)技术取得了爆炸性的发展。从 GPT-4、Claude 这样的文本生成模型,到 Midjourney、Stable Diffusion 这样的图像生成工具,再到 Sora 这样的视频生成模型,AI 已经具备了媲美甚至超越人类的内容创作能力。然而,技术是一把双刃剑。随着生成式 AI 的普及,内容安全与合规风险也呈指数级增长。

AI架构师小马 300

介绍几本COM的书籍(韩少勇)(上)

介绍几本COM的书籍<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 韩少勇 最有效的获取知识的途径就是读书,当然要读好书。难怪古人把求学也称作“念书”。 引言 实际上,写一些介绍电脑图书的文章是我长久以来的愿望。一方面由于我的朋友们经常让我为他们推荐一些切实有用的书,...

datoplay 153

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5769

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

COM技术内幕学习笔记

1.在下面的连接中下载>电子版图书,此书为.PDG格式文件,可以使用超星阅览器打开阅读.http://218.108.41.12/vchome/book/allbook.asp2.书中的代码整理:1) #include #include void trace(const char* pMsg) { cout}interface IX{ virtual void _std

龙宇网的专栏 1330

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深入解析COM技术:开源项目推荐

深入解析COM技术:开源项目推荐 去发现同类优质开源项目:https://gitcode.com/ COM技术内幕pdf及源代码完整版 项目介绍 在软件开发领域,组件对象模型(Component Object Model,简称COM)是一种广泛使用的技术,它为软件组件之间的交互提供了统一的接口。今天,我要向您推荐一个珍贵的开源项目——COM技术内幕pdf及源代码完整版。这个项目为您提供了《COM技...

gitblog_06787的博客 940

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

COM技术内幕pdf及源代码完整版

COM技术内幕pdf及源代码完整版 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了《COM技术内幕》的pdf版本以及其对应的完整版源代码。这是一份珍贵的资源,可以帮助您深入了解COM(Component Object Model)技术的原理和应用。 《COM技术内幕》pdf文档详细介绍了COM技术的各个方面,包括其设计理念、实现机制以及在实际编程中的应用。同时,我们...

gitblog_06792的博客 506

***求书***COM技术内幕

亲爱的你们好,很关注COM技术,希望大家提携,望大家分享你的书籍-------《COM技术内幕》!谢谢另外我这里也有很多好书,可以和大家分享互看!联系方式:lwwrl@163.com

pigmingming的专栏 676

COM技术内幕-读书笔记-系列之零

感触========================================================================未经许可,也可转载,但请注明出处!希望能够与各位初学COM的网友共勉:-)========================================================================一直想学COM,但又没

Benkong2008的专栏 1649

《COM技术内幕学习笔记》续 二

欢迎转载。唯一要求是请注明出处和作者。共同努力吧。作者:苦孩子blog地址:http://blog.youkuaiyun.com/kuhaiziQueryInterface的实现它需要完成的是根据某个给定的返回指向相应接口的指针。若组件支持客户指定的接口,那么应返回S_OK已经湘阴的指针。若不支持。返回值应是E_NOINTERFACE并将相应的指针返回值置成NULL。下面是一个例子:interface IX:

kuhaizi 1427

介绍几本COM的书籍

  -- 韩少勇最有效的获取知识的途径就是读书,当然要读好书。难怪古人把求学也称作“念书”。                     引言实际上,写一些介绍电脑图书的文章是我长久以来的愿望。一方面由于我的朋友们经常让我为他们推荐一些切实有用的书,另一方面的原因是我在早些时候的学习并不很顺利,面对书店里鱼龙混杂的“繁华”,真是不知所措。结果横下心来,只要觉得差不多,就买!结果买了很多本不必买的书,浪

Thinking > Coding >Think 2202

《COM技术内幕》学习一

两年前大三下学期,听完崔神的GIS中的现代软件技术,和很多同学一样把《COM技术内幕》《Visual C++开发COM程序》奉为经典。但是苦于当初知识水平有限,又没有写过任何的COM组件甚至没有用过COM组件,这些书都是翻了两页就看不下去了,对于我来说实在是太晦涩。       前几天用C++做了些ArcGIS的二次开发,对组件有了点使用体会,反过来在看《COM技术内幕》有种豁然开朗的感觉

潘安 BLOGS 1215

com组件技术学习 第二章

本章内容主要是COM对象的一些基本知识本章把com对象称为对象 把com接口称为接口客户端 通过指向接口数据结构的指针来调用接口成员函数里面是包含是接口函数表的所以无论上面语言 只要支持这样的内存结构描述 就可以定义接口‘com接口的vtable 和 class的vtable的完全一致 (类的虚函数表)由此可知 C++的虚函数表特性设计和COM的接口规范设计完全一致如果用c语言来表示特性的话 则会相对麻烦一点2.2.4 接口描述语言IDLIDL用于定义com接口和常用的数据类型。

weixin_52243202的博客 1158

纠错《COM技术内幕》之ProgID

最近在看《COM技术内幕》,看到第六章时发现该章节在解释ProgID时有点错误,特此记录一下,也给正在学习COM的小伙伴们一个提示。 因为我发现该BUG存在于一些很多大型软件的COM组件中。(开发者估计都是看了该书吧) 在该书的6.3.5章节讲解了ProgID的在注册表中的格式,示例如下 注册表文件格式为 Windows Registry Edito

一如当初 5291
上一篇: VC 中ASSERT宏和VERIFY宏的区别
下一篇: COM 组件技术内幕之四 (引用计数)
InsideKernel
博客等级 码龄19年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值