IPersistStorage::Save 方法 (objidl.h)
将对象及其包含的任何嵌套对象保存到指定的存储对象中。 对象进入 NoScribble 模式。
语法
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
参数
[in] pStgSave
指向要在其中保存对象的存储的 IStorage 指针。
[in] fSameAsLoad
指示指定的存储是当前存储,该存储是通过以下调用之一传递到对象的: IPersistStorage::InitNew、 IPersistStorage::Load 或 IPersistStorage::SaveCompleted。
执行“另存为”或“将副本保存到”操作或执行完全保存时,此参数设置为 FALSE。 在后一种情况下,此方法将保存到临时文件,删除原始文件,并重命名临时文件。
此参数设置为 TRUE,以在内存不足的情况下执行完全保存,或执行仅保存脏组件的快速增量保存。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
由于磁盘上缺少空间,对象未保存。 |
|
由于磁盘空间不足以外的错误,无法保存对象。 |
注解
此方法将对象及其包含的任何嵌套对象保存到指定的存储中。 它还会将对象置于 NoScribble 模式。 因此,在后续调用 IPersistStorage::SaveCompleted 方法将对象返回到 Normal 模式之前,对象无法写入其存储。
如果存储对象与加载或创建它的存储对象相同,则保存操作可能能够将增量更改写入存储对象。 否则,必须完成完整保存。
此方法以递归方式调用 IPersistStorage::Save 方法、 OleSave 函数或 IStorage::CopyTo 方法以保存其嵌套对象。
此方法不调用 IStorage::Commit 方法。 也不会将 CLSID 写入存储对象。 这两个任务都是调用方的责任。
给调用方的说明
通常调用执行以下步骤的 OleSave 帮助程序函数,而不是直接调用 IPersistStorage::Save:- 调用 WriteClassStg 函数,将对象的类标识符写入存储。
- 调用 IPersistStorage::Save 方法。
- 如果需要,请在存储对象上调用 IStorage::Commit 方法。
如果嵌入对象将 IPersistStorage::Save 方法传递给其嵌套对象,则必须先接收对其 IPersistStorage::SaveCompleted 方法的调用,然后才能为其嵌套对象调用此方法。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |