Share via


Metodo IEnumVARIANT::Clone (oaidl.h)

Crea una copia dello stato corrente dell'enumerazione.

Sintassi

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

Parametri

[out] ppEnum

Enumeratore clone.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
E_OUTOFMEMORY
Memoria insufficiente per completare l'operazione.

Commenti

Usando questa funzione, è possibile registrare un punto specifico nella sequenza di enumerazione e quindi tornare a in un secondo momento. L'enumeratore restituito è della stessa interfaccia effettiva di quella clonata.

Non esiste alcuna garanzia che esattamente lo stesso set di varianti verrà enumerato la seconda volta come è stato enumerato il primo. Sebbene sia auspicabile un duplicato esatto, il risultato dipende dalla raccolta da enumerare. Potrebbe risultare poco pratico per alcune raccolte mantenere questa condizione, ad esempio un'enumerazione dei file in una directory.

Esempio

Il codice seguente implementa IEnumVariant::Clone. Un'implementazione di esempio completa dell'interfaccia IEnumVariant è disponibile nell'esempio 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;
}

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione oaidl.h

Vedi anche

IEnumVARIANT