Condividi tramite


Funzione VariantCopy (oleauto.h)

Libera la variante di destinazione e crea una copia della variante di origine.

Sintassi

HRESULT VariantCopy(
  [out] VARIANTARG       *pvargDest,
  [in]  const VARIANTARG *pvargSrc
);

Parametri

[out] pvargDest

Variante di destinazione.

[in] pvargSrc

Variante di origine.

Valore restituito

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
DISP_E_ARRAYISLOCKED
La variante contiene una matrice bloccata.
DISP_E_BADVARTYPE
Il tipo variant non è un tipo valido di variant.
E_INVALIDARG
Uno degli argomenti non è valido.
E_OUTOFMEMORY
Memoria insufficiente per completare l'operazione.

Commenti

Prima di tutto, liberare qualsiasi memoria di proprietà di pvargDest, ad esempio VariantClear (pvargDest deve puntare a una variante inizializzata valida e non semplicemente a una posizione di memoria non inizializzata). PvargDest riceve quindi una copia esatta del contenuto di pvargSrc.

Se pvargSrc è un VT_BSTR, viene creata una copia della stringa. Se pvargSrcis un VT_ARRAY, viene copiata l'intera matrice. Se pvargSrc è un VT_DISPATCH o VT_UNKNOWN, Viene chiamato AddRef per incrementare il conteggio dei riferimenti dell'oggetto.

Se la variante da copiare è un oggetto COM passato per riferimento, il campo vtfield del parametro pvargSrcparameter è VT_DISPATCH | VT_BYREF o VT_UNKNOWN | VT_BYREF. In questo caso , VariantCopy non incrementa il conteggio dei riferimenti per l'oggetto a cui si fa riferimento. Poiché la variante copiata è un puntatore a un riferimento a un oggetto, VariantCopy non consente di determinare se è necessario incrementare il conteggio dei riferimenti dell'oggetto. È quindi responsabilità del chiamante chiamare IUnknown::AddRef sull'oggetto o meno, in base alle esigenze.

Nota Il metodo VariantCopy non è threadsafe.
 

Requisiti

   
Piattaforma di destinazione Windows
Intestazione oleauto.h
Libreria OleAut32.lib
DLL OleAut32.dll

Vedi anche

Funzioni di manipolazione varianti