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

Read メソッドは、ストリーム オブジェクトからメモリに指定されたバイト数を読み取り、現在のシーク ポインターから開始します。

構文

HRESULT Read(
  [out] void  *pv,
  [in]  ULONG cb,
  [out] ULONG *pcbRead
);

パラメーター

[out] pv

ストリーム データが読み取られたバッファーへのポインター。

[in] cb

ストリーム オブジェクトから読み取るデータのバイト数。

[out] pcbRead

ストリーム オブジェクトから読み取られた実際のバイト数を受け取る ULONG 変数へのポインター。

メモ 読み取られたバイト数は 0 になる場合があります。
 

戻り値

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

リターン コード 説明
S_OK 要求されたすべてのデータがストリーム オブジェクトから正常に読み取られました。 cb で要求されたバイト数は、 pcbRead で返されるバイト数と同じです。
S_FALSE pcbRead で返される値が、cb で要求されたバイト数より小さくなります。 これは、ストリームの末尾に達したことを示します。 読み取られたバイト数は、 pv バッファーがいっぱいになっている量を示します。
E_PENDING 非同期ストレージのみ: 読み取るデータの一部またはすべてを現在使用できません。
STG_E_ACCESSDENIED 呼び出し元には、このストリーム オブジェクトを読み取るために必要なアクセス許可がありません。
STG_E_INVALIDPOINTER いずれかのポインター値が無効です。
STG_E_REVERTED オブジェクトは、トランザクション ツリー内のオブジェクトの上にある元に戻す操作によって無効になっています。

注釈

このメソッドは、このストリーム オブジェクトからメモリにバイトを読み取ります。 ストリーム オブジェクトは 、STGM_READ モードで開く必要があります。 このメソッドは、読み取られた実際のバイト数によってシーク ポインターを調整します。

実際に読み取られたバイト数も pcbRead パラメーターで返されます。

呼び出し元へのメモ

読み取られた実際のバイト数は、エラーが発生した場合、または読み取り操作中にストリームの終了に達した場合に、要求されたバイト数より小さくすることができます。 返されるバイト数は、常に要求されたバイト数と比較する必要があります。 返されるバイト数が要求されたバイト数より少ない場合、通常は Read メソッドがストリームの末尾を越えて読み取ろうとしたことを意味します。

アプリケーションは、ストリームの終わりの読み取り操作で、返されたエラーと S_OK の両方の戻り値を処理する必要があります。

要件

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

こちらもご覧ください

ISequentialStream::Write

IStorage::OpenStream

IStream

IStream - 複合ファイルの実装

STGMOVE