Partager via


Fonction VariantCopy (oleauto.h)

Libère la variante de destination et effectue une copie de la variante source.

Syntaxe

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

Paramètres

[out] pvargDest

Variante de destination.

[in] pvargSrc

Variante source.

Valeur retournée

Cette fonction peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
Réussite.
DISP_E_ARRAYISLOCKED
La variante contient un tableau verrouillé.
DISP_E_BADVARTYPE
Le type de variant n’est pas un type valide de variant.
E_INVALIDARG
L’un des arguments n’est pas valide.
E_OUTOFMEMORY
Mémoire insuffisante pour terminer l’opération.

Notes

Tout d’abord, libérez toute mémoire appartenant à pvargDest, telle que VariantClear (pvargDest doit pointer vers une variante initialisée valide, et pas simplement vers un emplacement de mémoire non initialisé). Ensuite, pvargDest reçoit une copie exacte du contenu de pvargSrc.

Si pvargSrc est un VT_BSTR, une copie de la chaîne est effectuée. Si pvargSrc est un VT_ARRAY, le tableau entier est copié. Si pvargSrc est un VT_DISPATCH ou un VT_UNKNOWN, AddRef est appelé pour incrémenter le nombre de références de l’objet.

Si la variante à copier est un objet COM passé par référence, le champ vtfield du paramètre pvargSrcparameter est VT_DISPATCH | VT_BYREF ou VT_UNKNOWN | VT_BYREF. Dans ce cas, VariantCopy n’incrémente pas le nombre de références sur l’objet référencé. Étant donné que la variante copiée est un pointeur vers une référence à un objet, VariantCopy n’a aucun moyen de déterminer s’il est nécessaire d’incrémenter le nombre de références de l’objet. Il incombe donc à l’appelant d’appeler IUnknown::AddRef sur l’objet ou non, selon le cas.

Note La méthode VariantCopy n’est pas threadsafe.
 

Configuration requise

   
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll

Voir aussi

Fonctions de manipulation de variantes