VariantClear

variant をクリアする。

VariantClear pvarg

pvarg : [var] クリアする variant。

(プラグイン / モジュール : oleaut32.dll)

解説

variant をクリアする。

[戻り値]
次のいずれかの値を返すことがある。
(以下省略)

[備考]
VARIANTARG (または VARIANT) 型の変数を含むメモリが解放される前 (ローカル変数がスコープから外れる時など)
に、この関数を使用して変数をクリアする。この関数は vt フィールドを VT_EMPTY に設定することで VARIANTARG
をクリアする。VARIANTARG の現在の内容が最初に解放される。vt フィールドが VT_BSTR の場合、文字列が解放される。vt
フィールドが VT_DISPATCH の場合、オブジェクトが解放される。vt フィールドに VT_ARRAY
ビットが設定されている場合、配列が解放される。クリアされる variant が参照によって渡された COM オブジェクトの場合、pvarg
パラメータの vt フィールドは VT_DISPATCH | VT_BYREF または VT_UNKNOWN | VT_BYREF
となる。この場合、VariantClear はオブジェクトを解放しない。クリアされる variant
がオブジェクトへの参照へのポインタであるため、VariantClear
はオブジェクトを解放する必要があるかどうかを判断する方法を持たない。したがって、必要に応じてオブジェクトを解放するかどうかは呼び出し元の責任となる。場合によっては、VariantClear
を呼び出さずにコード内で variant をクリアする方が望ましいことがある。例えば、この関数を呼び出さずに VT_I4 variant
の型を別の型に変更できる。BSTR の safe array は、各要素に対して VariantClear ではなく
SysFreeString が呼び出される。ただし、VT_type を受信したが処理できない場合は VariantClear
を呼び出す必要がある。variant の safe array も各メンバに対して VariantClear
が呼び出される。これらの場合に VariantClear を使用することで、Automation が将来新しい variant
型を追加してもコードが動作し続けることが保証される。未初期化の variant に対して VariantClear
を使用してはならない。新しい VARIANTARG または VARIANT を初期化するには VariantInit
を使用する。未解決の参照を持つ配列を含む variant はクリアできない。クリアしようとすると DISP_E_ARRAYISLOCKED
を含む HRESULT が返される。

情報

プラグイン / モジュールoleaut32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の oleaut32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_oleaut32_gen2.hs