IByteBuffer::Write メソッド
[ Write メソッドは、 [要件] セクションで指定されたオペレーティング システムで使用できます。 Windows Server 2003 Service Pack 1 (SP1) 以降、Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティング システムでは使用できません。 IStream インターフェイスも同様の機能を提供します。
Write メソッドは、現在のシーク ポインターから始まるストリーム オブジェクトに、指定した数をバイトから書き込みます。
構文
HRESULT Write(
[in] BYTE *pByte,
[in] LONG cb,
[out] LONG *pcbWritten
);
パラメーター
-
pByte [in]
-
ストリームに書き込まれるデータを含むバッファーのアドレス。 cb が 0 の場合でも、このパラメーターに有効なポインターを指定する必要があります。
-
cb [in]
-
ストリームへの書き込みを試行するデータのバイト数。 このパラメーターには 0 を指定できます。
-
pcbWritten [out]
-
このメソッドがストリーム オブジェクトに書き込まれた実際のバイト数を書き込む LONG 変数のアドレス。 呼び出し元は、このポインターを NULL に設定できます。この場合、このメソッドは書き込まれた実際のバイト数を提供しません。
戻り値
戻り値は HRESULT です。 S_OK の値は、呼び出しが成功したことを示します。
解説
IByteBuffer::Write メソッドは、指定されたデータをストリーム オブジェクトに書き込みます。 シーク ポインターは、実際に書き込まれたバイト数に合わせて調整されます。 実際に書き込まれたバイト数は 、pcbWritten パラメーターで返されます。 バイト数が 0 バイトの場合、書き込み操作は無効です。
現在、シーク ポインターがストリームの末尾を超え、バイト数が 0 以外の場合、このメソッドはストリームのサイズをシーク ポインターに増やし、シーク ポインターから始まる指定したバイトを書き込みます。 ストリームに書き込まれたフィル バイトは、特定の値に初期化されません。 これは、MS-DOS FAT ファイル システムでのファイルの終わりの動作と同じです。
バイト数が 0 で、ストリームの末尾を超えるシーク ポインターでは、ストリームをシーク ポインターに増やすフィル バイトは作成されません。 この場合、ストリームのサイズを大きくし、フィル バイトを書き込むには、 IByteBuffer::SetSize メソッドを呼び出す必要があります。
pcbWritten パラメーターは、エラーが発生した場合でも値を持つことができます。
COM 提供の実装では、ストリーム オブジェクトはスパースではありません。 フィル バイトは最終的にディスクに割り当てられ、ストリームに割り当てられます。
例
次の例は、ストリーム オブジェクトへのバイトの書き込みを示しています。
LONG lWrite;
HRESULT hr;
// Write to the buffer.
// byData is an array of 64 bytes.
hr = pIByteBuff->Write(byData,
64,
&lWrite);
if (FAILED(hr))
printf("Failed IByteBuffer::Write\n");
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
クライアント サポートの終了 |
Windows XP |
サーバー サポートの終了 |
Windows Server 2003 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
IID |
IID_IByteBufferは E126F8FE-A7AF-11D0-B88A-00C04FD424B9 として定義されています |