Compartir a través de


Función VariantCopy (oleauto.h)

Libera la variante de destino y realiza una copia de la variante de origen.

Sintaxis

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

Parámetros

[out] pvargDest

Variante de destino.

[in] pvargSrc

Variante de origen.

Valor devuelto

Esta función puede devolver uno de estos valores.

Código devuelto Descripción
S_OK
Correcto.
DISP_E_ARRAYISLOCKED
La variante contiene una matriz bloqueada.
DISP_E_BADVARTYPE
El tipo de variante no es un tipo válido de variante.
E_INVALIDARG
Uno de los argumentos no es válido.
E_OUTOFMEMORY
Memoria insuficiente para completar la operación.

Comentarios

En primer lugar, libere cualquier memoria que sea propiedad de pvargDest, como VariantClear (pvargDest debe apuntar a una variante inicializada válida y no simplemente a una ubicación de memoria no inicializada). A continuación, pvargDest recibe una copia exacta del contenido de pvargSrc.

Si pvargSrc es un VT_BSTR, se realiza una copia de la cadena. Si pvargSrcis es un VT_ARRAY, se copia toda la matriz. Si pvargSrc es un VT_DISPATCH o VT_UNKNOWN, se llama a AddRef para incrementar el número de referencias del objeto.

Si la variante que se va a copiar es un objeto COM que se pasa por referencia, el vtfield del pvargSrcparameter se VT_DISPATCH | VT_BYREF o VT_UNKNOWN | VT_BYREF. En este caso, VariantCopy no incrementa el recuento de referencias en el objeto al que se hace referencia. Dado que la variante que se copia es un puntero a una referencia a un objeto, VariantCopy no tiene forma de determinar si es necesario incrementar el recuento de referencias del objeto. Por lo tanto, es responsabilidad del autor de la llamada llamar a IUnknown::AddRef en el objeto o no, según corresponda.

Nota El método VariantCopy no es threadsafe.
 

Requisitos

   
Plataforma de destino Windows
Encabezado oleauto.h
Library OleAut32.lib
Archivo DLL OleAut32.dll

Consulte también

Funciones de manipulación de variantes