IStream::Seek メソッド (objidl.h)

Seek メソッドは、シーク ポインターを新しい場所に変更します。 新しい場所は、ストリームの先頭、ストリームの末尾、または現在のシーク ポインターに対する相対位置です。

構文

HRESULT Seek(
  [in]  LARGE_INTEGER  dlibMove,
  [in]  DWORD          dwOrigin,
  [out] ULARGE_INTEGER *plibNewPosition
);

パラメーター

[in] dlibMove

dwOrigin パラメーターによって示される位置に追加される変位。 dwOriginSTREAM_SEEK_SET場合、これは符号付き値ではなく符号なし値として解釈されます。

[in] dwOrigin

dlibMove で指定された変位の原点。 配信元には、ファイルの先頭 (STREAM_SEEK_SET)、現在のシーク ポインター (STREAM_SEEK_CUR)、またはファイルの末尾 (STREAM_SEEK_END) を指定できます。 値の詳細については、 STREAM_SEEK 列挙を参照してください。

[out] plibNewPosition

このメソッドがストリームの先頭から新しいシーク ポインターの値を書き込む場所へのポインター。

このポインターは NULL に設定できます。 この場合、このメソッドは新しいシーク ポインターを提供しません。

戻り値

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

リターン コード 説明
S_OK シーク ポインターが正常に調整されました。
E_PENDING 非同期ストレージのみ: 現在、ストリーム データの一部またはすべてを使用できません。
STG_E_INVALIDPOINTER plibNewPosition が読み取られないため、plibNewPosition が無効なメモリを指していることを示します。
STG_E_INVALIDFUNCTION dwOrigin パラメーターに無効な値が含まれているか、dlibMove パラメーターに無効なオフセット値が含まれています。 たとえば、シーク ポインターの結果は負のオフセット値です。
STG_E_REVERTED オブジェクトは、トランザクション ツリー内のオブジェクトの上にある元に戻す操作によって無効になっています。

注釈

IStream::Seek はシーク ポインターを変更して、後続の読み取り操作と書き込み操作をストリーム オブジェクト内の別の場所で実行できるようにします。 ストリームの先頭の前にシークするとエラーになります。 ただし、ストリームの末尾を超えてシークするエラーではありません。 ストリームの末尾を超えたシークは、書き込みが完了する直前にストリーム バイト範囲が新しいシーク位置まで拡張されるため、後続の書き込み操作に役立ちます。

また、このメソッドを使用して、 dwOrigin パラメーターを STREAM_SEEK_CUR に設定し、 dlibMove パラメーターを 0 に設定してシーク ポインターが変更されないようにして、このメソッドを呼び出すことで、シーク ポインターの現在の値を取得することもできます。 現在のシーク ポインターは、 plibNewPosition パラメーターで返されます。

要件

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

こちらもご覧ください

ISequentialStream::Read

ISequentialStream::Write

IStream - 複合ファイルの実装

STREAM_SEEK