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


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

Уведомляет объект о том, что он может записывать данные в свой объект хранения. Это делается путем уведомления объекта о том, что он может отменить изменения из режима NoScribble (в котором он не должен выполнять запись в свой объект хранения) в обычный режим (в котором он может). Объект переходит в режим NoScribble при получении вызова IPersistStorage::Save .

Синтаксис

HRESULT SaveCompleted(
  [in] IStorage *pStgNew
);

Параметры

[in] pStgNew

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

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

Этот метод может возвращать следующие значения.

Код возврата Описание
S_OK
Метод завершился успешно.
E_OUTOFMEMORY
Объект оставался в режиме HandsOff или NoScribble из-за нехватки памяти. Как правило, эта ошибка возникает, когда объекту не удается открыть необходимые потоки и объекты хранения в pStgNew.
E_INVALIDARG
Недопустимый параметр pStgNew . Как правило, эта ошибка возникает, если pStgNew имеет значение NULL , когда объект находится в режиме HandsOff.
E_UNEXPECTED
Объект находится в обычном режиме и ранее не вызывал IPersistStorage::Save или IPersistStorage::HandsOffStorage.

Комментарии

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

Если объект возвращается из режима HandsOff, параметр pStgNew должен иметь значение, отличное от NULL. В режиме HandsOffFromNormal этот параметр является новым объектом хранения, который заменяет объект, который был отозван методом IPersistStorage::HandsOffStorage . Данные в объекте хранилища являются копией данных из отозванного объекта хранилища. В режиме HandsOffAfterSave данные совпадают с данными, которые были сохранены в последний раз. Это не то же самое, что данные в отозванном объекте хранилища.

Если объект возвращается из режима NoScribble, параметр pStgNew может иметь значение NULL или не NULL. Если значение РАВНО NULL, объект снова имеет доступ к своему объекту хранилища. Если значение не равно NULL, объект компонента должен имитировать получение вызова метода HandsOffStorage . Если объект компонента не может имитировать этот вызов, его контейнер должен быть подготовлен к фактическому вызову метода HandsOffStorage .

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

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

Требования

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

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

IPersistStorage