ISequentialStream::Write メソッド (objidl.h)

Write メソッドは、現在のシーク ポインターからストリーム オブジェクトに指定したバイト数を書き込みます。

構文

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

パラメーター

[in] pv

ストリームに書き込まれるデータを含むバッファーへのポインター。 cb がゼロの場合でも、このパラメーターに有効なポインターを指定する必要があります。

[in] cb

ストリームへの書き込みを試行するデータのバイト数。 この値はゼロの場合があります。

[out] pcbWritten

このメソッドがストリーム オブジェクトに書き込まれた実際のバイト数を書き込む ULONG 変数へのポインター。 呼び出し元は、このポインターを NULL に設定できます。この場合、このメソッドは書き込まれた実際のバイト数を提供しません。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK データがストリーム オブジェクトに正常に書き込まれた。
E_PENDING 非同期ストレージのみ: 書き込まれるデータの一部またはすべてを現在使用できません。
STG_E_MEDIUMFULL ストレージ デバイスに空き領域がないため、書き込み操作に失敗しました。
STG_E_ACCESSDENIED 呼び出し元には、このストリーム オブジェクトへの書き込みに必要なアクセス許可がありません。
STG_E_CANTSAVE 不適切なアクセスやスペース不足以外の理由でデータを書き込むことができません。
STG_E_INVALIDPOINTER ポインター値の 1 つが無効です。 pv パラメーターには、cb が 0 の場合でも有効なポインターが含まれている必要があります。
STG_E_REVERTED オブジェクトは、トランザクション ツリー内のオブジェクトの上にある元に戻す操作によって無効になっています。
STG_E_WRITEFAULT ディスク エラーが原因で書き込み操作が失敗しました。 この値は、このメソッドが (STGM_SIMPLE フラグを使用して) 単純モードで開かれたストリームに書き込もうとしたときにも返されます。

注釈

ISequentialStream::Write は、指定されたデータをストリーム オブジェクトに書き込みます。 シーク ポインターは、実際に書き込まれたバイト数に合わせて調整されます。 実際に書き込まれたバイト数は 、pcbWritten パラメーターで返されます。 バイト数が 0 バイトの場合、書き込み操作は無効です。

シーク ポインターが現在ストリームの末尾を超え、バイト数が 0 以外の場合、このメソッドはストリームのサイズをシーク ポインターに増やし、シーク ポインターから始まる指定したバイトを書き込みます。 ストリームに書き込まれたフィル バイトは、特定の値に初期化されません。 これは、MS-DOS FAT ファイル システムのファイルの終わりの動作と同じです。

0 バイトカウントとストリームの末尾を超えるシーク ポインターでは、このメソッドは、シーク ポインターへのストリームを増やすフィル バイトを作成しません。 この場合、ストリームのサイズを大きくし、フィル バイトを書き込むには、 IStream::SetSize メソッドを呼び出す必要があります。

pcbWritten パラメーターは、エラーが発生した場合でも値を持つことができます。

COM が提供する実装では、ストリーム オブジェクトはスパースではありません。 フィル バイトは最終的にディスクに割り当てられ、ストリームに割り当てられます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー objidl.h
Library Uuid.lib
[DLL] Ole32.dll

こちらもご覧ください

ISequentialStream::Read

IStorage::OpenStream

IStream

IStream - 複合ファイルの実装

STGMOVE