1

谁负责调用 CoInitialize 和 CoUninitialize 如果

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

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

4

1 回答 1

0

不知道情况 2,但在情况 1 中,代理进程肯定会调用CoInitialize()/ CoUninitialize()。我是这样知道的。

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

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

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

于 2010-03-24T06:52:06.817 回答