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


Функция OleSave (ole2.h)

Сохраняет объект, открытый в режиме транзакций, в указанный объект хранилища.

Синтаксис

HRESULT OleSave(
  [in] LPPERSISTSTORAGE pPS,
  [in] LPSTORAGE        pStg,
  [in] BOOL             fSameAsLoad
);

Параметры

[in] pPS

Указатель на интерфейс IPersistStorage в сохраняемом объекте.

[in] pStg

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

[in] fSameAsLoad

ЗНАЧЕНИЕ TRUE указывает, что pStg — это тот же объект хранилища, из которого был загружен или создан объект ; ЗНАЧЕНИЕ FALSE указывает, что pStg был загружен или создан из другого объекта хранилища.

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

Эта функция возвращает S_OK об успешном выполнении. Ниже перечислены другие возможные значения.

Код возврата Описание
STGMEDIUM_E_FULL
Не удалось сохранить объект из-за нехватки места на диске.

Эта функция также может возвращать любые значения ошибок, возвращаемые методом IPersistStorage::Save .

Комментарии

Вспомогающая функция OleSave обрабатывает распространенные ситуации, когда объект открыт в режиме транзакций, а затем сохраняется в указанный объект хранилища, который использует реализацию составного файла, предоставленного OLE. Режим транзакций означает, что изменения объекта буферизуются до вызова IStorage::Commit или IStorage::Revert . Вызывающие абоненты могут обрабатывать другие ситуации, вызывая интерфейсы IPersistStorage и IStorage напрямую.

OleSave выполняет следующие действия:

  • Вызывает метод IPersist::GetClassID , чтобы получить ИДЕНТИФИКАТОР CLSID объекта .
  • Записывает CLSID в объект хранилища с помощью функции WriteClassStg .
  • Вызывает метод IPersistStorage::Save для сохранения объекта .
  • Если при сохранении не было ошибок; вызывает метод IStorage::Commit для фиксации изменений.
Примечание Статические объекты сохраняются в потоке с именем CONTENTS. Статические объекты метафайлов сохраняются в "размещаемом формате метафайлов", а статические данные DIB сохраняются в "формате DIB-файла". Эти форматы определяются как стандарты OLE для метафайлов и DIB. Все данные, передаваемые с помощью интерфейса IStream или файла (т. е. через IDataObject::GetDataHere), должны иметь следующие форматы. Кроме того, все объекты, формат файла которых по умолчанию — метафайл или DIB, должны записывать свои данные в поток CONTENTS с использованием этих стандартных форматов.
 

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ole2.h
Библиотека Ole32.lib
DLL Ole32.dll
Набор API ext-ms-win-com-ole32-l1-1-3 (представлен в Windows 10 версии 10.0.10240)

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

IPersistStorage

IStorage