如果
,谁负责调用CoInitialize和CoUninitialize1-我在代理进程中托管一个COM dll(使用dcomcnfg实用程序或COM +向导)?
2-我构建了一个包含COM对象的ISAPI DLL?
答案 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()
已被调用。