Метод IEnumVARIANT::Clone (oaidl.h)

Создает копию текущего состояния перечисления.

Синтаксис

HRESULT Clone(
  [out] IEnumVARIANT **ppEnum
);

Параметры

[out] ppEnum

Перечислитель клонов.

Возвращаемое значение

Этот метод может возвращать одно из этих значений.

Код возврата Описание
S_OK
Успешно.
E_OUTOFMEMORY
Недостаточно памяти для завершения операции.

Комментарии

С помощью этой функции можно записать определенную точку в последовательности перечисления, а затем вернуться к . Возвращаемый перечислитель имеет тот же фактический интерфейс, что и клонирующийся.

Нет никакой гарантии, что во второй раз будет перечислен тот же набор вариантов, что и первый. Хотя желательно точное дублирование, результат зависит от перечисляемой коллекции. Может оказаться, что для некоторых коллекций нецелесообразно поддерживать это условие (например, перечисление файлов в каталоге).

Примеры

Следующий код реализует IEnumVariant::Clone. Полный пример реализации интерфейса IEnumVariant доступен в примере "Основы COM" (Enumvar.cpp).

STDMETHODIMP
CEnumVariant::Clone(IEnumVARIANT ** ppenum)
{
   CEnumVariant * penum = NULL;
   HRESULT hr;

   if (ppenum == NULL)
      return E_INVALIDARG;

   *ppenum = NULL;

   hr = CEnumVariant::Create(m_psa, m_cElements, &penum);
   if (FAILED(hr))
      goto error;
   penum->AddRef();
   penum->m_lCurrent = m_lCurrent;

   *ppenum = penum;
   return NOERROR;

error:
   if (penum)
      penum->Release();
   return hr;
}

Требования

Требование Значение
Целевая платформа Windows
Header oaidl.h

См. также раздел

IEnumVARIANT