IStream_CopyTo

ストリームの現在のシークポインタから別のストリームの現在のシークポインタへ、指定されたバイト数をコピーする。

IStream_CopyTo this, pstm, cb, pcbRead, pcbWritten

this : [comobj] IStream インターフェースの COM オブジェクト変数
pstm : [comobj] 宛先ストリームへのポインタ。pstm が指すストリームは、新しいストリームでもソースストリームのクローンでもよい。
cb : [int64] ソースストリームからコピーするバイト数。
pcbRead : [var] このメソッドがソースから実際に読み取ったバイト数を書き込む位置へのポインタ。このポインタを NULL に設定できる。その場合、このメソッドは実際に読み取ったバイト数を提供しない。
pcbWritten : [var] このメソッドが宛先に実際に書き込んだバイト数を書き込む位置へのポインタ。このポインタを NULL に設定できる。その場合、このメソッドは実際に書き込んだバイト数を提供しない。

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

解説

ストリームの現在のシークポインタから別のストリームの現在のシークポインタへ、指定されたバイト数をコピーする。

[戻り値]
このメソッドは次のいずれかの値を返す。 | リターンコード | 説明 |
|----------------|---------------| |S_OK | ストリームオブジェクトが正常にコピーされた。|
|E_PENDING | 非同期ストレージのみ: コピー対象のデータの一部または全部が現在利用できない。 |
|STG_E_INVALIDPOINTER | ポインタパラメータの 1 つの値が無効である。| |STG_E_MEDIUMFULL |
ストレージデバイスに空き容量がないため、ストリームがコピーされない。| |STG_E_REVERTED | トランザクションツリーの上位の
revert 操作によりオブジェクトが無効化された。|

[備考]
CopyTo メソッドは、指定されたバイトを 1
つのストリームから別のストリームにコピーする。ストリームを自分自身にコピーするのにも使用できる。各ストリームインスタンスのシークポインタは、読み書きされたバイト数だけ調整される。このメソッドは、ISequentialStream::Read
を使用して cb バイトをメモリに読み込み、即座に ISequentialStream::Write
を使用して宛先ストリームに書き込むのと等価であるが、IStream::CopyTo
の方が効率的である。宛先ストリームは、IStream::Clone
メソッドを呼び出して作成したソースストリームのクローンでもよい。IStream::CopyTo
がエラーを返した場合、ソースまたは宛先のシークポインタが有効であると仮定してはならない。さらに、pcbRead と pcbWritten
の値は返されても意味を持たない。IStream::CopyTo
が成功した場合、実際に読み書きされたバイト数は同じである。現在のシークポインタからソースの残りをコピーするには、cb パラメータに最大の
large integer 値を指定する。シークポインタがストリームの先頭にある場合、この操作はストリーム全体をコピーする。

情報

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