IStream::Seek 方法 (objidl.h)

Seek 方法将查找指针更改为新位置。 新位置相对于流的开头、流的末尾或当前查找指针。

语法

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

参数

[in] dlibMove

要添加到 dwOrigin 参数指示的位置的位移。 如果 dwOrigin是STREAM_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_CURdlibMove 参数设置为 0,这样搜寻指针就不会更改。 当前搜寻指针在 plibNewPosition 参数中返回。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h
Library Uuid.lib
DLL Ole32.dll

另请参阅

ISequentialStream::Read

ISequentialStream::Write

IStream - 复合文件实现

STREAM_SEEK