Compartilhar via


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

Cria uma cópia do estado atual da enumeração.

Sintaxe

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

Parâmetros

[out] ppEnum

O enumerador clone.

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK
Êxito.
E_OUTOFMEMORY
Memória insuficiente para concluir a operação.

Comentários

Usando essa função, um ponto específico na sequência de enumeração pode ser registrado e, em seguida, retornado para em um momento posterior. O enumerador retornado é da mesma interface real que a que está sendo clonada.

Não há nenhuma garantia de que exatamente o mesmo conjunto de variantes será enumerado na segunda vez em que foi enumerado o primeiro. Embora uma duplicata exata seja desejável, o resultado depende da coleção ser enumerada. Você pode achar que é impraticável que algumas coleções mantenham essa condição (por exemplo, uma enumeração dos arquivos em um diretório).

Exemplos

O código a seguir implementa IEnumVariant::Clone. Uma implementação de exemplo completa da interface IEnumVariant está disponível no exemplo linhas de conceitos básicos 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;
}

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho oaidl.h

Confira também

IEnumVARIANT