【发布时间】:2011-08-08 10:03:00
【问题描述】:
每一个。 我们知道 COM 服务器以 dll 或 ax 的形式存在。我们可以通过调用 CoCreateInstance 来使用 COM 组件。你知道每个 COM 类都有一个 CLSID。我们使用 CLSID 创建一个对象。我想回答一个 dll(COM 服务器)中可以实现多少个 COM 类。
【问题讨论】:
标签: com
每一个。 我们知道 COM 服务器以 dll 或 ax 的形式存在。我们可以通过调用 CoCreateInstance 来使用 COM 组件。你知道每个 COM 类都有一个 CLSID。我们使用 CLSID 创建一个对象。我想回答一个 dll(COM 服务器)中可以实现多少个 COM 类。
【问题讨论】:
标签: com
一个 .dll 文件(进程内 COM 服务器)可以为任意数量的 COM 类提供服务 - 我们有一个商业产品,它带有一个实现了大约 20 个 COM 类的单一 COM 服务器。
Windows 注册表会将多个类 ID 映射到同一个 .dll 文件这一事实不是问题 - 每个进程内 COM 服务器中都有 DllGetClassObject() 函数,该函数通过请求的类 ID 并检索正确的类工厂.因此,一个进程内 COM 服务器可以为多个 COM 类提供服务。
【讨论】:
DllGetClassObject() 将检索正确的类工厂。