Share via


Método IEnumVARIANT::Clone (oaidl.h)

Crea una copia del estado actual de la enumeración.

Sintaxis

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

Parámetros

[out] ppEnum

Enumerador de clonación.

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK
Correcto.
E_OUTOFMEMORY
Memoria insuficiente para completar la operación.

Comentarios

Con esta función, se puede registrar un punto determinado de la secuencia de enumeración y, a continuación, volver a en un momento posterior. El enumerador devuelto es de la misma interfaz real que la que se está clonando.

No hay ninguna garantía de que el mismo conjunto de variantes se enumerará la segunda vez que se ha enumerado la primera. Aunque es deseable un duplicado exacto, el resultado depende de la colección que se enumera. Es posible que no sea práctico que algunas colecciones mantengan esta condición (por ejemplo, una enumeración de los archivos de un directorio).

Ejemplos

El código siguiente implementa IEnumVariant::Clone. Hay disponible una implementación de ejemplo completa de la interfaz IEnumVariant en el ejemplo com Fundamentals Lines (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;
}

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado oaidl.h

Consulte también

IEnumVARIANT