Метод IEnumVARIANT::Clone (oaidl.h)
Создает копию текущего состояния перечисления.
Синтаксис
HRESULT Clone(
[out] IEnumVARIANT **ppEnum
);
Параметры
[out] ppEnum
Перечислитель клонов.
Возвращаемое значение
Этот метод может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Недостаточно памяти для завершения операции. |
Комментарии
С помощью этой функции можно записать определенную точку в последовательности перечисления, а затем вернуться к . Возвращаемый перечислитель имеет тот же фактический интерфейс, что и клонирующийся.
Нет никакой гарантии, что во второй раз будет перечислен тот же набор вариантов, что и первый. Хотя желательно точное дублирование, результат зависит от перечисляемой коллекции. Может оказаться, что для некоторых коллекций нецелесообразно поддерживать это условие (например, перечисление файлов в каталоге).
Примеры
Следующий код реализует 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 |