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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の oleaut32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_oleaut32_gen2.hs |