VariantCopy-Funktion (oleauto.h)

Gibt die Zielvariante frei und macht eine Kopie der Quellvariante.

Syntax

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

Parameter

[out] pvargDest

Die Zielvariante.

[in] pvargSrc

Die Quellvariante.

Rückgabewert

Diese Funktion kann einen dieser Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
DISP_E_ARRAYISLOCKED
Die Variante enthält ein Array, das gesperrt ist.
DISP_E_BADVARTYPE
Der Variant-Typ ist kein gültiger Variant-Typ.
E_INVALIDARG
Eines der Argumente ist ungültig.
E_OUTOFMEMORY
Unzureichender Arbeitsspeicher, um den Vorgang abzuschließen.

Hinweise

Geben Sie zunächst alle Arbeitsspeicher frei, der sich im Besitz von pvargDest befindet, z. B . VariantClear (pvargDest muss auf eine gültige initialisierte Variante verweisen und nicht einfach auf einen nicht initialisierten Speicherort). Anschließend erhält pvargDest eine genaue Kopie des Inhalts von pvargSrc.

Wenn pvargSrc ein VT_BSTR ist, wird eine Kopie der Zeichenfolge erstellt. Wenn pvargSrc ein VT_ARRAY ist, wird das gesamte Array kopiert. Wenn pvargSrc ein VT_DISPATCH oder VT_UNKNOWN ist, wird AddRef aufgerufen, um die Verweisanzahl des Objekts zu erhöhen.

Wenn die zu kopierende Variante ein COM-Objekt ist, das als Verweis übergeben wird, wird das vtfield des pvargSrcparameters VT_DISPATCH | VT_BYREF oder VT_UNKNOWN | VT_BYREF. In diesem Fall erhöht VariantCopy nicht die Verweisanzahl für das Objekt, auf das verwiesen wird. Da die zu kopierende Variante ein Zeiger auf einen Verweis auf ein Objekt ist, kann VariantCopy nicht ermitteln, ob die Verweisanzahl des Objekts erhöht werden muss. Es liegt daher in der Verantwortung des Aufrufers, IUnknown::AddRef für das Objekt aufzurufen.

Hinweis Die VariantCopy-Methode ist nicht threadsicher.
 

Requirements (Anforderungen)

   
Zielplattform Windows
Kopfzeile oleauto.h
Bibliothek OleAut32.lib
DLL OleAut32.dll

Weitere Informationen

Variantenbearbeitungsfunktionen