IStream 接口 (objidl.h)

IStream 接口允许读取和写入数据流对象。 Stream 对象包含结构化存储对象中的数据,其中存储提供 结构。 简单数据可以直接写入流,但最常见的是,流是嵌套在存储对象中的元素。 它们类似于标准文件。

IStream 接口定义的方法类似于 MS-DOS FAT 文件函数。 例如,每个流对象都有自己的访问权限和查找指针。 DOS 文件和流对象之间的main区别在于,在后一种情况下,使用 IStream 接口指针而不是文件句柄打开流。

此接口中的方法将对象的数据显示为可以读取或写入的连续字节序列。 还有一些方法可用于提交和还原在事务处理模式下打开的流上的更改,以及限制对流中某个字节范围的访问的方法。

流可以在不消耗文件系统资源的情况下长时间保持打开状态。 IUnknown::Release 方法类似于文件上的 close 函数。 释放后,流对象不再有效,并且无法使用。

异步名字对象的客户端可以在数据拉取或数据推送模型之间进行选择,以驱动异步 IMoniker::BindToStorage 操作和接收异步通知。 有关详细信息 ,请参阅 URL 名字对象 。 下表比较了这两个下载模型中 IBindStatusCallback::OnDataAvailable 中返回的异步 ISequentialStream::Read 和 IStream::Seek 调用的行为:

IStream 方法调用 数据拉取模型中的行为 数据推送模型中的行为
调用读取来读取部分数据 (也就是说,并非所有可用数据都) 返回 S_OK。 在从 IBindStatusCallback::OnDataAvailable 返回之前,客户端必须继续读取所有可用数据,否则绑定操作将被阻止。 (即读取,直到返回S_FALSE或E_PENDING) 返回 S_OK。 即使客户端此时从 IBindStatusCallback::OnDataAvailable 返回,绑定操作也会继续,并且 IBindStatusCallback::OnDataAvailable 将重复调用,直到绑定完成。
调用读取以读取所有可用数据 如果绑定操作尚未完成,则返回E_PENDING,当有更多数据可用时,将再次调用 IBindStatusCallback::OnDataAvailable 与数据拉取模型相同。
调用读取以读取所有可用数据,绑定操作在文件) 结束 (结束 返回S_FALSE。 后续调用 IBindStatusCallback::OnDataAvailable 时, grfBSC 标志设置为 BSCF_LASTDATANOTIFICATION。 与数据拉取模型相同。
调用 Seek Seek 在数据拉取模型中不起作用 Seek 在数据推送模型中不起作用。
 

有关本主题的一般信息,请参阅 异步名字对象 和数据 拉取模型与数据推送模型 以获取更具体的信息。 另请参阅 管理内存分配 ,详细了解 COM 的内存管理规则。

继承

IStream 接口继承自 ISequentialStream 接口。 IStream 还具有以下类型的成员:

方法

IStream 接口具有以下方法。

 
IStream::Clone

Clone 方法使用自己的查找指针创建一个新的流对象,该对象引用与原始流相同的字节。
IStream::Commit

Commit 方法可确保对以事务处理模式打开的流对象所做的任何更改都反映在父存储中。
IStream::CopyTo

将指定的字节数从流中的当前搜索指针复制到其他流中的当前搜索指针。
IStream::LockRegion

LockRegion 方法限制对流中指定字节范围的访问。
IStream::Revert

Revert 方法放弃自上次 IStream::Commit 调用以来对事务处理流所做的所有更改。 在直接模式下打开的流和使用 IStream::Revert 的 COM 复合文件实现的流上,此方法不起作用。
IStream::Seek

将查找指针更改为新位置。 新位置相对于流的开头、流的结束或当前查找指针。
IStream::SetSize

更改流对象的大小。
IStream::Stat

Stat 方法检索此流的 STATSTG 结构。
IStream::UnlockRegion

UnlockRegion 方法删除以前使用 IStream::LockRegion 限制的字节范围的访问限制。

要求

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

另请参阅

ISequentialStream

IStream - 复合文件实现