VariantCopy 関数 (oleauto.h)
変換先バリアントを解放し、ソースバリアントのコピーを作成します。
構文
HRESULT VariantCopy(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvargSrc
);
パラメーター
[out] pvargDest
変換先バリアント。
[in] pvargSrc
ソースバリアント。
戻り値
この関数は、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
バリアントには、ロックされている配列が含まれています。 |
|
バリアント型がバリアント型の有効な型ではありません。 |
|
引数の 1 つが無効です。 |
|
操作を完了するにはメモリが不足しています。 |
解説
まず、 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 を呼び出す必要があります。
必要条件
対象プラットフォーム | Windows |
ヘッダー | oleauto.h |
Library | OleAut32.lib |
[DLL] | OleAut32.dll |