Поделиться через


Метод IPersistStorage::HandsOffStorage (objidl.h)

Указывает объекту освободить все объекты хранилища, переданные ему контейнером, и перейти в режим HandsOff.

Синтаксис

HRESULT HandsOffStorage();

Возвращаемое значение

Этот метод возвращает S_OK, чтобы указать, что объект успешно перешел в режим HandsOff.

Комментарии

Этот метод приводит к тому, что объект освобождает все удерживаемые объекты хранилища и переходит в режим HandsOff до последующего вызова IPersistStorage::SaveCompleted . В режиме HandsOff объект не может ничего делать, и единственной операцией, которая работает, является операция закрытия.

Приложение-контейнер обычно вызывает этот метод во время операции полного сохранения или полного сохранения с нехваткой памяти, чтобы заставить объект освободить все указатели на его текущее хранилище. В этих сценариях вызов HandsOffStorage происходит после вызова OleSave или IPersistStorage::Save, в результате чего объект помещает в режим HandsOffAfterSave. Вызов этого метода необходим, чтобы приложение-контейнер удаляло текущий файл при полном сохранении или вызывало метод IRootStorage::SwitchToFile в рамках экономии памяти.

Приложение-контейнер также вызывает этот метод, если объект находится в обычном режиме, чтобы поместить объект в режим HandsOffFromNormal.

Хотя объект компонента находится в режиме HandsOffAfterSave или HandsOffFromNormal, большинство операций с объектом будут завершатся ошибкой. Таким образом, контейнер должен как можно скорее восстановить объект в обычный режим. Приложение-контейнер делает это путем вызова метода IPersistStorage::SaveCompleted , который передает указатель хранилища обратно на объект компонента для нового объекта хранилища.

Примечания для разработчиков

Этот метод должен освободить все указатели на текущий объект хранилища, включая указатели на все вложенные потоки и хранилища. Если объект содержит вложенные объекты, контейнерное приложение должно рекурсивно вызывать этот метод для всех вложенных объектов, которые загружаются или выполняются.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

IPersistStorage

OleSave