다음을 통해 공유


VariantCopy 함수(oleauto.h)

대상 변형을 해제하고 원본 변형의 복사본을 만듭니다.

구문

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

매개 변수

[out] pvargDest

대상 변형입니다.

[in] pvargSrc

원본 변형입니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
S_OK
성공.
DISP_E_ARRAYISLOCKED
변형에는 잠긴 배열이 포함되어 있습니다.
DISP_E_BADVARTYPE
변형 형식이 유효한 형식이 아닙니다.
E_INVALIDARG
인수 중 하나가 잘못되었습니다.
E_OUTOFMEMORY
메모리가 부족하여 작업을 완료할 수 없습니다.

설명

먼저 VariantClear (pvargDest는 초기화되지 않은 메모리 위치가 아니라 유효한 초기화된 변형을 가리킬 수 있음)와 같이 pvargDest가 소유한 모든 메모리를 해제합니다. 그런 다음 pvargDest는 pvargSrc 콘텐츠의 정확한 복사본을 받습니다.

pvargSrc가 VT_BSTR 경우 문자열의 복사본이 만들어집니다. pvargSrcis가 VT_ARRAY 경우 전체 배열이 복사됩니다. pvargSrc가 VT_DISPATCH 또는 VT_UNKNOWN 경우 AddRef 가 호출되어 개체의 참조 횟수를 증분합니다.

복사할 변형이 참조로 전달되는 COM 개체인 경우 pvargSrcparameter의 vtfield는 VT_DISPATCH | VT_BYREF 또는 VT_UNKNOWN | VT_BYREF. 이 경우 VariantCopy 는 참조된 개체에 대한 참조 수를 증가시키지 않습니다. 복사되는 변형은 개체에 대한 참조에 대한 포인터이므로 VariantCopy 는 개체의 참조 수를 증분할 필요가 있는지 확인할 방법이 없습니다. 따라서 호출자는 개체에서 IUnknown::AddRef 를 적절하게 호출해야 합니다.

참고VariantCopy 메서드는 threadsafe가 아닙니다.
 

요구 사항

   
대상 플랫폼 Windows
헤더 oleauto.h
라이브러리 OleAut32.lib
DLL OleAut32.dll

추가 정보

변형 조작 함수