COM引用计数

时间:2014-04-14 10:56:58

标签: c windows winapi com ole

美好的一天。

初始化COM接口引用计数的正确方法是什么?

我看到很多示例,其中引用计数已初始化为 1 ,但也请参见 0 设置的示例。

什么是差异?

2 个答案:

答案 0 :(得分:3)

你必须这样设置,当调用最后一个Release()时,对象会自行处理。这通常意味着在创建对象时,在处理指向请求对象的调用者的对象指针之前,它必须具有引用计数1。是否将引用计数器初始化为零然后调用AddRef()(在将指针移到调用者之前)将其初始化为1并且不调用AddRef()通常取决于您。

答案 1 :(得分:1)

重要的是您的COM对象具有有效引用计数。

如果你创建了这个对象,那么从计数1开始是有意义的(因为刚刚创建了一个对象实例)。

您可能需要阅读this interesting article on COM in plain C

从那篇文章中,您可以阅读(注意exmaple->count = 1;行):

IExample * example;

example = (IExample *)GlobalAlloc(GMEM_FIXED, sizeof(IExample));
example->count = 1;
example->buffer[0] = 0;