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


Метод IPersistStream::Save (objidl.h)

Сохраняет объект в указанном потоке.

Синтаксис

HRESULT Save(
  [in] IStream *pStm,
  [in] BOOL    fClearDirty
);

Параметры

[in] pStm

Указатель IStream на поток, в котором должен быть сохранен объект.

[in] fClearDirty

Указывает, следует ли очистить «грязный» флаг после завершения сохранения. Если задано значение TRUE, флаг должен быть снят. Если значение РАВНО FALSE, флаг должен быть оставлен без изменений.

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

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

Код возврата Описание
S_OK
Метод завершился успешно.
STG_E_CANTSAVE
Объекту не удалось сохранить себя в потоке. Эта ошибка может указывать, например, на то, что объект содержит другой объект, который не является сериализуемым для потока, или что вызов ISequentialStream::Write вернул STG_E_CANTSAVE.
STG_E_MEDIUMFULL
Не удалось сохранить объект, так как на запоминающее устройство не осталось места.

Комментарии

IPersistStream::Save сохраняет объект в указанном потоке и указывает, должен ли объект сбрасывать флаг грязное.

Указатель поиска расположен в месте в потоке, с которого объект должен начать запись своих данных. Объект вызывает метод ISequentialStream::Write для записи своих данных.

При выходе указатель на поиск должен располагаться непосредственно за данными объекта. Позиция указателя поиска не определена, если возвращается ошибка.

Примечания к вызывающим абонентам

Вместо вызова IPersistStream::Save напрямую вызывается вспомогающая функция OleSaveToStream , которая выполняет следующие действия:
  1. Вызывает GetClassID , чтобы получить ИДЕНТИФИКАТОР CLSID объекта.
  2. Вызывает функцию WriteClassStm для записи CLSID объекта в поток.
  3. Вызывает IPersistStream::Save.
При вызове этих методов напрямую можно записать другие данные в поток после CLSID перед вызовом IPersistStream::Save.

Реализация IPersistStream , предоставляемая OLE, соответствует этому же шаблону.

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

Метод IPersistStream::Save не записывает CLSID в поток. Вызывающий объект отвечает за запись ИДЕНТИФИКАТОРа CLSID.

Метод IPersistStream::Save может считывать, записывать и искать в потоке; но он не должен искать расположение в потоке перед расположением указателя поиска на входе.

Заметки о моникере URL-адреса

Сохраняет моникер URL-адреса в потоке. Двоичный формат моникера URL-адреса — это строка URL-адреса в Юникоде (может быть полной или частичной строкой URL-адреса, дополнительные сведения см. в разделе CreateURLMonikerEx ). Это число символов ULONG , за которым следует много символов Юникода.

Требования

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

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

IPersistStream