Метод IPersistStorage::Save (objidl.h)
Сохраняет объект и все вложенные объекты, которые он содержит, в указанный объект хранилища. Объект переходит в режим NoScribble.
Синтаксис
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
Параметры
[in] pStgSave
Указатель IStorage на хранилище, в котором должен быть сохранен объект.
[in] fSameAsLoad
Указывает, является ли указанное хранилище текущим, которое было передано объекту одним из следующих вызовов: IPersistStorage::InitNew, IPersistStorage::Load или IPersistStorage::SaveCompleted.
Этот параметр имеет значение FALSE при выполнении операции "Сохранить как " или "Сохранить копию в " или при выполнении полного сохранения. В последнем случае этот метод сохраняет во временный файл, удаляет исходный файл и переименовывает временный файл.
Этот параметр имеет значение TRUE, чтобы выполнить полное сохранение в ситуации нехватки памяти или быстрое добавочное сохранение, при котором сохраняются только грязное компоненты.
Возвращаемое значение
Этот метод может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
Объект не был сохранен из-за нехватки места на диске. |
|
Не удалось сохранить объект из-за ошибок, отличных от нехватки места на диске. |
Комментарии
Этот метод сохраняет объект и все вложенные объекты, содержащиеся в нем, в указанное хранилище. Он также переводит объект в режим NoScribble. Таким образом, объект не может выполнять запись в хранилище до тех пор, пока последующий вызов метода IPersistStorage::SaveCompleted не вернет объект в обычный режим.
Если объект хранилища совпадает с объектом, из который он был загружен или создан, операция сохранения может записывать добавочные изменения в объект хранилища. В противном случае необходимо выполнить полное сохранение.
Этот метод рекурсивно вызывает метод IPersistStorage::Save , функцию OleSave или метод IStorage::CopyTo для сохранения вложенных объектов.
Этот метод не вызывает метод IStorage::Commit . Он также не записывает CLSID в объект хранилища. Обе эти задачи являются обязанностями вызывающего абонента.
Примечания к вызывающим абонентам
Вместо прямого вызова IPersistStorage::Save обычно вызывается вспомогающая функция OleSave , которая выполняет следующие действия:- Вызовите функцию WriteClassStg , чтобы записать идентификатор класса для объекта в хранилище.
- Вызовите метод IPersistStorage::Save .
- При необходимости вызовите метод IStorage::Commit для объекта хранилища.
Если внедренный объект передает метод IPersistStorage::Save вложенным объектам, он должен получить вызов метода IPersistStorage::SaveCompleted перед вызовом этого метода для вложенных объектов.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objidl.h |