IPersistStorage::HandsOffStorage 方法 (objidl.h)

指示对象释放其容器传递给它的所有存储对象,并进入 HandsOff 模式。

语法

HRESULT HandsOffStorage();

返回值

此方法返回S_OK,指示对象已成功进入 HandsOff 模式。

注解

此方法使对象释放它持有的任何存储对象,并进入 HandsOff 模式,直到后续 IPersistStorage::SaveCompleted 调用。 在 HandsOff 模式下,对象无法执行任何操作,唯一有效的操作是关闭操作。

容器应用程序通常在完全保存或低内存完全保存操作期间调用此方法,以强制对象释放指向其当前存储的所有指针。 在这些方案中, HandsOffStorage 调用是在调用 OleSaveIPersistStorage::Save 之后调用的,将对象置于 HandsOffAfterSave 模式。 必须调用此方法,以便容器应用程序可以在完整保存过程中删除当前文件,或者调用 IRootStorage::SwitchToFile 方法作为低内存保存的一部分。

当对象处于 Normal 模式时,容器应用程序还会调用此方法,以将对象置于 HandsOffFromNormal 模式。

当组件对象处于 HandsOffAfterSave 或 HandsOffFromNormal 模式时,对对象的大多数操作都将失败。 因此,容器应尽快将对象还原到 Normal 模式。 容器应用程序通过调用 IPersistStorage::SaveCompleted 方法执行此操作,该方法将存储指针传递回新存储对象的组件对象。

实施者说明

此方法必须释放指向当前存储对象的所有指针,包括指向任何嵌套流和存储的指针。 如果对象包含嵌套对象,则容器应用程序必须为加载或运行的任何嵌套对象以递归方式调用此方法。

要求

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

另请参阅

IPersistStorage

OleSave