Реализация AddRef() и Release().

Функции AddRef() и Release() служат для управления временем жизни COM объекта. Каждый компонент COM имеет счетчик ссылок. Когда клиент получает некоторый интерфейс, значение счетчика увеличивается. Когда клиент заканчивает работу с интерфейсом, значение уменьшается. Когда значение счетчика ссылок становится равным 0, компонент удаляет себя из памяти. Для увеличения счетчика служит AddRef(), для уменьшения Release().

Функции компонента, которые возвращают указатели на интерфейсы, должны вызывать AddRef(). Когда компонент заканчивает работу с интерфейсом, он должен вызвать Release(). Когда компонент создает новую ссылку на интерфейс ( например путем присваивания ), он должен вызвать AddRef().

Пример реализации AddRef() и Release() :

ULONG __stdcall AddRef()
{
  return ++m_iRefCount;
}

ULONG __stdcall Release()
{
  if(--m_iRefCount==0)
  {
    delete this;
  }

  return m_iRefCount;
}
						


Hosted by uCoz