Метод IPersistStorage::SaveCompleted (objidl.h)
Уведомляет объект о том, что он может записывать данные в свой объект хранения. Это делается путем уведомления объекта о том, что он может отменить изменения из режима NoScribble (в котором он не должен выполнять запись в свой объект хранения) в обычный режим (в котором он может). Объект переходит в режим NoScribble при получении вызова IPersistStorage::Save .
Синтаксис
HRESULT SaveCompleted(
[in] IStorage *pStgNew
);
Параметры
[in] pStgNew
Указатель IStorage на новый объект хранилища, если он отличается от объекта хранилища перед сохранением. Этот указатель может иметь значение NULL , если текущий объект хранения не изменяется во время операции сохранения. Если объект находится в режиме HandsOff, этот параметр должен иметь значение, отличное от NULL.
Возвращаемое значение
Этот метод может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
Объект оставался в режиме HandsOff или NoScribble из-за нехватки памяти. Как правило, эта ошибка возникает, когда объекту не удается открыть необходимые потоки и объекты хранения в pStgNew. |
|
Недопустимый параметр pStgNew . Как правило, эта ошибка возникает, если pStgNew имеет значение NULL , когда объект находится в режиме HandsOff. |
|
Объект находится в обычном режиме и ранее не вызывал 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 |