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
);

parameters

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 参数设置为零,因此搜寻指针不会更改。 当前搜寻指针在 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