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 |
标头 |
|
类型库 |
|
DLL |
|
IID |
IID_IByteBuffer定义为 E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈