Método IPersistStorage::Save (objidl.h)

Guarda un objeto y los objetos anidados que contiene en el objeto de almacenamiento especificado. El objeto entra en modo NoScribble.

Sintaxis

HRESULT Save(
  [in] IStorage *pStgSave,
  [in] BOOL     fSameAsLoad
);

Parámetros

[in] pStgSave

Puntero IStorage al almacenamiento en el que se va a guardar el objeto.

[in] fSameAsLoad

Indica si el almacenamiento especificado es el actual, que se pasó al objeto mediante una de las siguientes llamadas: IPersistStorage::InitNew, IPersistStorage::Load o IPersistStorage::SaveCompleted.

Este parámetro se establece en FALSE al realizar una operación Guardar como o Guardar una copia en o al realizar un guardado completo. En este último caso, este método guarda en un archivo temporal, elimina el archivo original y cambia el nombre del archivo temporal.

Este parámetro se establece en TRUE para realizar un guardado completo en una situación de poca memoria o para realizar un ahorro incremental rápido en el que solo se guardan los componentes sucios.

Valor devuelto

Este método puede devolver los siguientes valores.

Código devuelto Descripción
S_OK
El método se completó correctamente.
STG_E_MEDIUMFULL
El objeto no se guardó debido a la falta de espacio en el disco.
E_FAIL
No se pudo guardar el objeto debido a errores distintos de la falta de espacio en disco.

Comentarios

Este método guarda un objeto y los objetos anidados que contiene en el almacenamiento especificado. También coloca el objeto en modo NoScribble. Por lo tanto, el objeto no puede escribir en su almacenamiento hasta que una llamada posterior al método IPersistStorage::SaveCompleted devuelve el objeto al modo Normal.

Si el objeto de almacenamiento es el mismo que el que se cargó o creó, es posible que la operación de guardado pueda escribir cambios incrementales en el objeto de almacenamiento. De lo contrario, se debe realizar un guardado completo.

Este método llama recursivamente al método IPersistStorage::Save , a la función OleSave o al método IStorage::CopyTo para guardar sus objetos anidados.

Este método no llama al método IStorage::Commit . Tampoco escribe el CLSID en el objeto de almacenamiento. Ambas tareas son las responsabilidades del autor de la llamada.

Notas a los autores de llamadas

En lugar de llamar directamente a IPersistStorage::Save , normalmente se llama a la función auxiliar OleSave que realiza los pasos siguientes:
  1. Llame a la función WriteClassStg para escribir el identificador de clase para el objeto en el almacenamiento.
  2. Llame al método IPersistStorage::Save .
  3. Si es necesario, llame al método IStorage::Commit en el objeto de almacenamiento.
A continuación, una aplicación contenedora realiza cualquier otra operación necesaria para completar el guardado y llama al método SaveCompleted para cada objeto.

Si un objeto incrustado pasa el método IPersistStorage::Save a sus objetos anidados, debe recibir una llamada a su método IPersistStorage::SaveCompleted antes de llamar a este método para sus objetos anidados.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IPersistStorage

OleSave