如果代理进程或COM +,谁负责调用CoInitialize和CoUninitialize

时间:2010-03-23 16:12:54

标签: com atl com+ isapi

如果

,谁负责调用CoInitialize和CoUninitialize

1-我在代理进程中托管一个COM dll(使用dcomcnfg实用程序或COM +向导)?

2-我构建了一个包含COM对象的ISAPI DLL?

1 个答案:

答案 0 :(得分:0)

不知道案例2,但在案例1中,代理过程肯定会调用CoInitialize() / CoUninitialize()。以下是我对此的了解。

我们有一个COM对象,我们在COM +中托管,它本身使用MS XML 4.当您需要在MS XML 4中创建XML文档对象时,请调用CoCreateInstance()。我们从不在COM对象中调用CoInitialize(),但文档创建总是成功的 - 当然代理调用CoInitialize()。如果我们在独立的应用程序中执行相同的操作,则创建失败,除非我们自己调用CoInitialize()

所以底线是:COM +代理(我确信它也适用于DCOM代理)调用CoInitialize()本身。

顺便说一句,您可以使用此方法调查案例2 - 在ISAPI dll中调用CoCreateInstance() - 如果成功CoInitialize()已被调用。