次の方法で共有


IByteBuffer::Seek メソッド

[ Seek メソッドは、[要件] セクションで指定したオペレーティング システムで使用できます。 Windows Server 2003 Service Pack 1 (SP1) 以降、Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティング システムでは使用できません。 IStream インターフェイスも同様の機能を提供します。

Seek メソッドは、シーク ポインターをバッファーの先頭、バッファーの末尾、または現在のシーク ポインターに対して相対的な新しい場所に変更します。

構文

HRESULT Seek(
  [in]  LONG dlibMove,
  [in]  LONG dwOrigin,
  [out] LONG *plibNewPosition
);

パラメーター

dlibMove [in]

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

dwOrigin [in]

dlibMove で指定された変位の原点を指定します。 配信元には、次の表のいずれかの値を指定できます。

説明
STREAM_SEEK_SET
新しいシーク ポインターは、ストリームの先頭を基準としたオフセットです。 この場合、 dlibMove パラメーターは、ストリームの先頭を基準とした新しいシーク位置です。
STREAM_SEEK_CUR
新しいシーク ポインターは、現在のシーク ポインターの位置を基準としたオフセットです。 この場合、 dlibMove パラメーターは、現在のシーク位置からの符号付き変位です。
STREAM_SEEK_END
新しいシーク ポインターは、ストリームの末尾を基準としたオフセットです。 この場合、 dlibMove パラメーターは、ストリームの末尾を基準とした新しいシーク位置です。

plibNewPosition [out]

このメソッドがストリームの先頭から新しいシーク ポインターの値を書き込む場所へのポインター。 このポインターを NULL に設定して、この値に関心がないことを示すことができます。 この場合、このメソッドは新しいシーク ポインターを提供しません。

戻り値

戻り値は HRESULT です。 S_OK の値は、呼び出しが成功したことを示します。

解説

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

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

次の例は、シーク ポインターを新しい場所に配置する方法を示しています。

LONG     lNewPos;
HRESULT  hr;

// Change the seek pointer.
hr = pIByteBuff->Seek(5, STREAM_SEEK_SET, &lNewPos);
if (FAILED(hr))
  printf("Failed IByteBuffer::Seek\n");
else
  printf("New position is %x\n", lNewPos);

要件

要件
サポートされている最小のクライアント
Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2003 [デスクトップ アプリのみ]
クライアント サポートの終了
Windows XP
サーバー サポートの終了
Windows Server 2003
ヘッダー
Scardssp.h
タイプ ライブラリ
Scardssp.tlb
[DLL]
Scardssp.dll
IID
IID_IByteBufferは E126F8FE-A7AF-11D0-B88A-00C04FD424B9 として定義されています