IPersistStorage::SaveCompleted 方法 (objidl.h)
通知对象它可以写入其存储对象。 它通过通知对象,它可以从 NoScribble 模式还原 (它不得写入到其存储对象) ,到正常模式 (,可在其中) 。 对象在收到 IPersistStorage::Save 调用时进入 NoScribble 模式。
语法
HRESULT SaveCompleted(
[in] IStorage *pStgNew
);
参数
[in] pStgNew
指向新存储对象的 IStorage 指针(如果与保存前的存储对象不同)。 如果当前存储对象在保存操作期间未更改,则此指针可以为 NULL 。 如果对象处于 HandsOff 模式,则此参数必须为非 NULL。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
由于内存不足,对象仍处于 HandsOff 模式或 NoScribble 模式。 通常,当对象无法在 pStgNew 中打开必要的流和存储对象时,会发生此错误。 |
|
pStgNew 参数无效。 通常,如果对象处于 HandsOff 模式时 pStgNew 为 NULL ,则会发生此错误。 |
|
对象处于 Normal 模式,以前没有调用 IPersistStorage::Save 或 IPersistStorage::HandsOffStorage。 |
注解
此方法通知对象,它可以还原正常模式,并可以再次写入其存储对象。 对象退出 NoScribble 模式或 HandsOff 模式。
如果对象正在从 HandsOff 模式还原,则 pStgNew 参数必须为非 NULL。 在 HandsOffFromNormal 模式下,此参数是替换 IPersistStorage::HandsOffStorage 方法吊销的新存储对象。 存储对象中的数据是已撤销的存储对象中的数据的副本。 在 HandsOffAfterSave 模式下,数据与最近保存的数据相同。 它与吊销的存储对象中的数据不同。
如果对象从 NoScribble 模式还原, 则 pStgNew 参数可以为 NULL 或非 NULL。 如果 为 NULL,则对象再次有权访问其存储对象。 如果它不是 NULL,则组件对象应模拟接收对其 HandsOffStorage 方法的调用。 如果组件对象无法模拟此调用,则必须准备好其容器以实际调用 HandsOffStorage 方法。
此方法必须以递归方式调用已加载或正在运行的任何嵌套对象。
如果此方法返回错误代码,则对象不会返回到 Normal 模式。 因此,容器对象可以尝试不同的保存策略。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |