Função VariantCopy (oleauto.h)

Libera a variante de destino e faz uma cópia da variante de origem.

Sintaxe

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

Parâmetros

[out] pvargDest

A variante de destino.

[in] pvargSrc

A variante de origem.

Valor retornado

Essa função pode retornar um desses valores.

Código de retorno Descrição
S_OK
Êxito.
DISP_E_ARRAYISLOCKED
A variante contém uma matriz bloqueada.
DISP_E_BADVARTYPE
O tipo variante não é um tipo válido de variante.
E_INVALIDARG
Um dos argumentos não é válido.
E_OUTOFMEMORY
Memória insuficiente para concluir a operação.

Comentários

Primeiro, libere qualquer memória que pertence a pvargDest, como VariantClear (pvargDest deve apontar para uma variante inicializada válida e não simplesmente para um local de memória não inicializado). Em seguida, pvargDest recebe uma cópia exata do conteúdo de pvargSrc.

Se pvargSrc for um VT_BSTR, uma cópia da cadeia de caracteres será feita. Se pvargSrcis um VT_ARRAY, toda a matriz será copiada. Se pvargSrc for um VT_DISPATCH ou VT_UNKNOWN, AddRef será chamado para incrementar a contagem de referência do objeto.

Se a variante a ser copiada for um objeto COM passado por referência, o vtfield do pvargSrcparameter será VT_DISPATCH | VT_BYREF ou VT_UNKNOWN | VT_BYREF. Nesse caso, VariantCopy não incrementa a contagem de referência no objeto referenciado. Como a variante que está sendo copiada é um ponteiro para uma referência a um objeto , VariantCopy não tem como determinar se é necessário incrementar a contagem de referência do objeto. Portanto, é responsabilidade do chamador chamar IUnknown::AddRef no objeto ou não, conforme apropriado.

Nota O método VariantCopy não é threadsafe.
 

Requisitos

   
Plataforma de Destino Windows
Cabeçalho oleauto.h
Biblioteca OleAut32.lib
DLL OleAut32.dll

Confira também

Funções de manipulação de variantes