IPersistStream::Save 方法 (objidl.h)

将对象保存到指定流。

语法

HRESULT Save(
  [in] IStream *pStm,
  [in] BOOL    fClearDirty
);

参数

[in] pStm

一个 IStream 指针,指向应将对象保存到其中的流。

[in] fClearDirty

指示在保存完成后是否清除已更新标志。 如果 为 TRUE,应清除该标志。 如果 为 FALSE,则标志应保持不变。

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。
STG_E_CANTSAVE
对象无法将自身保存到流中。 例如,此错误可能指示该对象包含另一个对象,该对象不能序列化为流或 ISequentialStream::Write 调用返回STG_E_CANTSAVE。
STG_E_MEDIUMFULL
无法保存对象,因为存储设备上没有剩余空间。

注解

IPersistStream::Save 将对象保存到指定的流中,并指示对象是否应重置其脏标志。

查找指针位于对象开始写入其数据的流中的位置。 该对象调用 ISequentialStream::Write 方法以写入其数据。

退出时,必须立即将查找指针定位在对象数据之上。 如果返回错误,则查找指针的位置是未定义的。

对呼叫者的说明

通常调用执行以下操作的 OleSaveToStream 帮助程序函数,而不是直接调用 IPersistStream::Save
  1. 调用 GetClassID 以获取对象的 CLSID。
  2. 调用 WriteClassStm 函数,将对象的 CLSID 写入流。
  3. 调用 IPersistStream::Save
如果直接调用这些方法,可以在调用 IPersistStream::Save 之前将其他数据写入 CLSID 之后的流中。

IPersistStream 的 OLE 提供的实现遵循相同的模式。

实现者的注释

IPersistStream::Save 方法不会将 CLSID 写入流。 调用方负责编写 CLSID。

IPersistStream::Save 方法可以从流中读取、写入和查找;但它不得在入口上的查找指针之前,在流中查找某个位置。

URL 名字对象备注

将 URL 名字对象保存到流。 URL 名字对象二进制格式是 Unicode (中的 URL 字符串可能是完整或部分 URL 字符串,请参阅 CreateURLMonikerEx 了解详细信息) 。 这表示为 ULONG 字符计数,后跟许多 Unicode 字符。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h

请参阅

IPersistStream