10、深入探索COM服务器:多类支持、对象创建与优化实践

深入探索COM服务器:多类支持、对象创建与优化实践

1. 多类支持的COM服务器

在COM编程中,我们创建的DLL可以作为一个容器,用于实现与特定CLSID相关联的类。例如,我们创建的DLL是类CVcr的实现载体,CVcr类实现了与CLSID_VCR相关的接口,这样的DLL被称为COM服务器。实际上,一个COM服务器可以容纳多个类,COM也支持服务器支持多类的概念。

当一个服务器支持多个类时,DllGetClassObject函数需要根据传入的CLSID来确定返回哪个类的实例。下面是一些COM相关的术语:
- 接口(Interface) :是客户端和服务器之间通信的抽象定义,如IVideo和ISVideo。
- 实现(Implementation) :是一个具体的数据类型,通过为接口的每个方法提供程序代码来支持一个或多个接口,在我们的例子中是C++类CVcr。
- COM对象(COM Object) :是实现类的一个实例,例如“new CVcr”。
- 组件类(Coclass) :是一个命名声明,代表具体可实例化的类型以及它所暴露的潜在接口列表,在我们的例子中是IDL声明“coclass VCR”。

2. 类的多实例创建问题

假设电视客户需要画中画功能,这意味着客户端需要创建VCR类的两个实例。我们可能会想到调用CoGetClassObject两次来实现,但这种方法效率不高,因为每次调用CoGetClassObject都会执行LoadLibrary、GetProces

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值