我的COM学习笔记

C++ COM学习笔记(一)浅谈COM初始化 com提倡的就是灵活,只有减少公开性才能减低耦合,在创建COM实例是也是如此,所有的COM实例都是通过CoCreateInstance()函数创建,那么怎么才能通过这一个API创建出自己现有的实例对象呢? 我们可以先看看函数原型 STDAPI CoCreateInstance( REFCLSID rclsid, //Class identifier (CLSID) of t 阅读详情

下面这个东西是我在01年学习COM时的一个笔记,原来发表在腾讯社区里,并被收入C/C++板块的精华区中。近日重拾COM,将它稍做修改,挪到这里,以便查找。

=====================================

2001.5.30
1.何谓组件?
组件(component)就是一个软件模块,专门用来完成特定的预定工作,实现二进制级的代码复用。

 
2.何谓COM?
COM,即Component Object Model(组件对象模型)。它不是编程语言,而是一套构造二进制兼容软件组件的规范。依照这个规范可以建立能够相互通信的软件组件,而不管这些组件使用什么语言或工具建立的。


3.COM术语
组件代码(Component Code):就是实现组件功能的代码。
接口(Interface):是一组公用功能定义,是组件向程序或其他组件提供的,用来说明本组件的功能,以及如何使用这些功能的方法集。
GUID(Globally Unique Identifier,全局唯一标识符):为一个128位整数,用来向操作系统和应用程序唯一标识这个组件。
二进制兼容性(Binary compatibility):无论组件用什么语言建立,它都与其它COM组件兼容和可供其他组件使用。


4.函数应返回HRESULT
COM接口的所有方法,除IUnKnown::AddRef和IUnKnown::Release外,返回类型都应为HRESULT,HRESULT是状态码。可以用GetScode()将此状态码转换成更详细的SCODE。

 
5.COM组件的实现规则
实现IUnKnown规则
内存管理规则:管理内存就是管理指针。
引用计数规则


2001-5-31
1.如何实现自定义接口?
利用MIDL(Microsoft Interface Definition Language),它是基于Open Software Foundation Distributed Computing Environment 的 Remote Procedure Call IDL。

 
2.IDL文件
import "oaidl.idl";//此文件包括IDispatch接口的定义,import相当于#include
import "ocidl.idl";

[
     object,//COM接口定义
     //ICTAddIn接口唯一标识符(GUID)
     uuid(9EDADF6F-C069-11D1-A446-0000E8D2CD0A),
     dual,//表示客户机可用两种方法访问这个接口
     helpstring("ICTAddIn Interface"),//将提示字符串与此接口建立联系
     pointer_default(unique)//指定除参数表中所列属性之外所有指针的缺省特征,unique表示指针可以是NULL,但不支持别名
]
interface ICTAddIn : IDispatch
{
   [id(1), helpstring("Insert code template.")] HRESULT CTInsCodeTmpl();
};
[
    uuid(9EDADF62-C069-11D1-A446-0000E8D2CD0A),
    version(1.0),
    helpstring("CodeTmpl Add-in Type Library")
]
library CODETMPLLib //类型库
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    importlib("devshl.dll");
    importlib("ide/devdbg.pkg");

[
    uuid(9EDADF70-C069-11D1-A446-0000E8D2CD0A),
    helpstring("CodeTmpl - Code Template Add-in")
]
coclass CTAddIn //组件类
{
   [default] interface ICTAddIn;
};
};


3.用ATL建立COM服务器
要用ATL建立COM组件,就要生成从至少另外两个类派生的类:CComObjectRoot和
CComCoClass。此外,还要从你的类派生CComObject类。

最后整理:2003-6-26  

学习笔记:物理信息神经网络(PINN) PINN 的强大在于它打破了传统数值方法的限制,将神经网络的非线性拟合能力与物理方程的严谨性结合起来。它在处理高维、数据稀缺、复杂物理约束的场景下尤其出色。当然,PINN 也有收敛慢、梯度消失等挑战,比如,复杂 PDE 可能导致梯度传播困难,收敛慢(梯度消失)、于具有快速变化特征的系统,如冲击波,标准 PINN 可能精度不足,需要改进策略,比如自适应采样或多尺度特征提取。但随着研究深入,这些问题正在不断被解决。物理或化学方程为什么往往是偏微分方程?什么是物理信息神经网络(PINN)?x_%7Bi%7D。 阅读详情

相关推荐

大疆sdkV4以及V5webrtc推流

webrtcSDK中要用它的VideoCapturer来初始化推流 ViewdoCapturer是一个接口我们继承它 然后重建创建文件CapturerAircraft.java文件。CameraUtil.java这个是我们用来创建CapturerAircraft的一个工具。除了CapturerAircraft这个文件不一样外其他都是一样的。PlayBodyBean.java这个是我们的配置文件。下面的有个代码块第一个是v4的 第二个是v5的。接着我们来创建几个推流用到的webrtc工具。

weixin_41624865的博客 1188

我的COM和ATL的学习

首先声明本人并非COM/ATL高手,尽管本人接触他们已经有4年了,但是因为工作中的一些原因一直未能深入研究和广泛的实际的使用它们。不过回想学习它们的痛苦经历,实在是有点不堪回首。在此仅以此文和大家探讨一下学习它们的路径,以让后来人少走弯路。我个人认为学习COM是一件不简单的事情,只有一步一个脚印踏踏实实的理解每个观点和理论才能真正懂得其精髓。那样才能在发生错误的时候,依靠自己的知识解决问题。我个人

梦中江湖——vcleaner 4149

FOC无刷电机磁编码器机械角度与电角度自动对齐校准及电机极对数自动获取的方法

本文提出磁编码器机械角度与电角度自动对齐校准方法及电机极对数自动获取方案。通过通直流电流使转子定向,读取机械角度并计算电角度偏移量,实现精确对齐;同时利用低速旋转时检测反电动势过零点次数,结合机械角度变化量自动计算极对数。核心算法包括转子定向、偏移量计算、极对数推导等步骤,并提供了基于STM32的C语言实现代码。该方法适用于工业伺服、机器人等高精度控制场景,需注意负载安全、参数调整和误差处理。两种自动化流程可有效解决电机安装调试中的角度对齐和参数识别问题。

qq_29653575的博客 2482

《COM 原理与应用》学习笔记

《COM 原理与应用》学习笔记 - 第一部分 COM原理 按:文章对COM原理具有高度总结性,推荐学习COM的朋友都看一看,COM注定要淘汰的,但学习COM的编程思想是非常有意义的。   dREAMtHEATER推荐必属佳品   《COM 原理与应用》学习笔记 - 第一部分 COM原理   savetime2k@yahoo.com     (本文内容基本上是从《COM 原理与应用》书中摘录,版权由

linuszhu的专栏 2412

Molflow新手必看:Facet基础操作全解析(从2D建模到3D拉伸)

本文为Molflow新手提供了Facet基础操作的全面解析,涵盖从2D图形创建到3D模型拉伸的完整流程。详细介绍了Facet作为几何建模基石的核心概念、顶点编辑、布尔运算以及拉伸、放样等关键操作,并深入讲解了如何为其配置物理参数以实现真空系统的蒙特卡洛模拟。

prometheus9mon的博客 417

把 LDB 讲透:SAP ABAP 逻辑数据库的结构、事件模型、动态选择与现代替代方案

摘要:SAP中的Logical Database(LDB)是一种将表组织成树形结构并统一生成选择屏幕的技术,通过事件驱动方式向报表程序传递数据。虽然被标记为过时,但在理解标准代码和优化性能方面仍有价值。LDB通过SE36事务码创建,其结构包含层级关系、选择屏幕和数据库程序。报表通过NODES声明和GET事件处理数据,支持动态选择以减少数据库访问。在S/4HANA和ABAP Cloud环境下,建议使用CDS View和ABAP SQL等现代方案替代LDB,以提升可测试性和架构清晰度。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 215

《COM技术内幕学习笔记》

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

kuhaizi 1755

多角度模板匹配的模板创建技巧

基于形状的模板匹配多角度创建技巧

manuoo的专栏 3402

《COM原理及应用》学习笔记之第一章

第一章 概述 1、组件的设计的原始目的跨平台、跨网络、积木式搭建程序 2、组件的两个规范:CORBA 和COMOMC(Object Management Group,对象管理组织)的CORBA(Common Object Request Breaker Arehitecture ,公共对象请求中介体系结构)。Microsoft的COM(Component Objedt

ZhangXinbin的专栏 3364

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 713

【人工智能】全面盘点国内AI九大模型:各擅胜场的智能先锋(豆包、文心一言、讯飞星火、通义千问、Kimi、智谱清言、腾讯元宝、秘塔、天工AI)

追求性价比与全能:选豆包,适合个人与中小企业日常使用;侧重中文创作与理解:选文心一言,文学与商业文案创作首选;需要专业语音交互:选讯飞星火,智能客服、车载场景必备;看重生态与多场景:选通义千问,适配电商、办公等企业需求;处理超长文本任务:选Kimi,文档分析、学术研究的利器;专注深度推理创作:选智谱清言,学术与创意写作的伙伴;依赖腾讯生态协同:选腾讯元宝,日常轻量需求的便捷之选;深耕法律学术领域:选秘塔,专业文本处理的权威工具;布局前沿技术体验:选天工AI,享受接近国际顶尖的智能服务。

奶爸的编程之路,也就一周冷个三天 1121

AUTOSAR学习笔记之COM模块

AUTOSAR COM

xiaoxingzi_gxz的博客 2296

[企业AI落地] RAG 知识库系统在多租户环境下的细粒度权限隔离设计

多租户 RAG 系统真正的风险不只是搜不到,而是把不该看到的内容查出来、说出来、写回去。本文结合多客户售后知识助手场景,用元数据结构、向量检索过滤、回答策略和审计回写示例拆解租户、资源、检索、生成、审计五层权限边界。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 219

COM编程学习笔记

平时分析病毒时,难免遇到一些用COM的,分析这种时比较头疼。找到一篇老外写的文章,通俗易懂,跟着练习了一把,消除对COM的陌生感! 文章地址 : https://www.codeproject.com/Articles/633/Introduction-to-COM-What-It-Is-and-How-to-Use-It https://www.codeproject.com/Articles...

Sven的忘却日记 1005

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

COM学习笔记1_COM初步探索

COM组件的两个重要需求:1。 动态链接2。 隐藏实现细节COM初步探索一个典型C++客户和组件的例子// 组件模块interface IX{ virtual void __stdcall Fx1() = 0 ; virtual void __stdcall Fx2() = 0 ;} ;interface IY{ virtual void

hongjiqin的专栏 1440

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 学习笔记

好久没有写博客了,今天记录下,作为一个程序猿,多记录点东西还是好的。最近比较懒,总是想写点东西来着,终于动手了,当你觉得晚的时候恰恰是最早的,勉励下自己 梳理一下一个进程内的 COM 组件,从代码组织到真正创建的过程 1. 首先前期编译的时候,利用ALT模板可以方便的将创建 COM对象的函数加入到一个特定的段中,这一点利用了编译器的特性,首先创建一个 类似于 SA 段,命名为s

my_et的专栏 782

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《COM本质论》学习第一章

COM本质论学习笔记

csdn_gddf102384398的博客 236

《COM原理及应用》学习笔记之写在后面的话

        从四月份开始就看《COM原理及应用》,边看边做笔记,终于在暑假结束的时候看完了,都发上去给大家看看,希望能够多多交流。        笔记中的有些只有标题没有内容,这是由两个原因造成的:一是不太好做笔记的,二是一些书上的原图没有考贝过来。        再者,有些内容整理得不够详细或者存在有错误的地方,有时间再看时整理完后会重新发布。        有问题的地方希望能给

ZhangXinbin的专栏 3909

com学习笔记之一

                                早就想学习COM方面的技术了,可是水平有限,看了老长时间还是连最基本都看不懂,最近发现了一本DirectShow方面的书,看到关于COM的一些基本的知识,讲的也不多,看了看觉得挺好,还可以理解,遂写下了笔记。     先写一下伪代码,然后再作分析。        CoInitalize(NULL);      

Jiao2_vc的专栏 978

COM学习笔记(三):动态链接(code)

动态链接: //从DLL中输出函数Create.h: extern "C" IUnknown* CreateInstance(){ IUnknown* pI = (IUnknown*)(void*)new CA; pI->AddRef(); return pI; } //cmpnt1.def ; ; Compnt1 module-defineition filel

yangchuankai's blog 814

COM学习笔记

COM,组件对象模型。 COM思想,面向组件编程。普通的类只是代码级的重用,需要重新编译。优点:1.利于重用。2.便于升级。3.便于开发的分工合作。4.便于软件的定制 重要概念:接口,用纯虚类实现。只有接口是暴露给客户程序的。 要使用组件:1.获取接口指针。为了在不暴露组件的情况下获得接口指针,COM提供工厂函数导出函数 DllGetClassObjec t负责

lp3331的专栏 363

【COM编程】从C++到COM,学习笔记

转载自:http://blog.youkuaiyun.com/netanimals/article/details/6863403 COM的产生   一. 为什么要引入COM? 先给一个答案:COM的产生是为了解决OLE技术。当然今天OLE已经变成了COM的一个成功应用例,就好比牛顿当初发明微积分是为了解决物理运动问题,但是今天物理运动问题只是微积分的一个应用而已——以上不

每一次对问题的深究,总会收获新的知识和体会 1739

《COM原理与应用》学习笔记——COM的实现

一、进程内组件和进程外组件 前面说过,COM组件支持进程内组件和进程外组件两种方式。进程内组件的优势就是快、方便,但是如果组件里面有哪个地方崩溃了也会导致主进程的崩溃。进程外组件虽然比较慢,但是很稳定。如果组件某个地方崩溃了,最多就是没有结果,不会导致主进程的崩溃(比如,看到了浏览器插件崩溃了,没见到浏览器崩溃吧)。用户在使用COM组件的时候,实际上是感觉不出来进程内组件和...

baiyongjianai6584的博客 271

COM学习笔记6_COM的复用:包容和聚合

继承可分实现继承和接口继承接口继承 :一个类只能继承另一个接口。一个接口是里面只有纯虚函数,没有数据和函数实现实现继承 :一个类继承另一个类,包括基类中的各种数据和实现COM不支持实现继承,因为实现继承会造成较大耦合,违背了COM的思想。COM实现复用可采用包容和聚合--------------------------------------------------

hongjiqin的专栏 1641

COM学习笔记1

在学习COM时,对COM的一大堆实现原理看了一大通,基本上想自己理解了。于是想现在该我来写一个COM了吧,但打开IDE却不知如何下手。我该怎么办? 在网上一收发现一个叫杨老师的前辈已经给我写了一个详细的教程,照着一步一步的做,编译,链接。哈哈 我的COM组件出来了。  于是想

走出憧憬的专栏 1333
上一篇: 利用.NET的Reflection增强对象工厂的扩展性
下一篇: 关于软件复用的思考
sam1111
博客等级 码龄26年 18粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值