服务器端的 com创建(一)

本文介绍了COM对象的创建过程及跨语言实现方式。通过CoCreateInstance函数创建COM对象,并涉及其内部调用CoGetClassObject生成类工厂的过程。此外,还讲解了如何通过注册表进行DLL注册以支持COM组件的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天心情不是很好,就简单的写写。
没有写完的明天再写。

com对象的创建说白了,就是要new。
但为了跨语言,它不能直接new,好多语言不会。

那怎么办,让别人来干,然后自己窃取别人的指针。

com就是这样一个东西。

ATL更是在它上面做了很多的工作,这些工作是为了配合com的理论流程,同样也为了配合它的众多的api

建立com ,当然是调用CoCreateInstance,这个是表面,不是真的,它在内部会调用一个叫作CoGetClassObject
的函数来生成它的类厂,然后由它的类厂来完成生成工作。

但是就调这个函数是不行的,dll 位置我们都不知道,程序是怎么调的呢

当然要注册。就是把信息写入注册表

在注册表中有你需要的所有信息。

ATL 给所有的类都写了一个 ATL_OBJMAP_ENTRY的结构,这个结构中就放着这个类所有的信息。
这个结构通过一个很强大的方法将信息直接写入了一个连续的数据段,以至于以后很多操作都通过遍历这个数据段来
执行

UpdataRegistry就是这个结构体中的函数,它就是用来注册的,复杂的我就不说了,直接使用一个DECLARE_REGISTRY
宏就可以完成了注册,这个宏配合一个rgs脚本就可以注册一个com
这个脚本就是向导里面经常出现的那个。

太困了,明天再写吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值