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 |
---|---|
|
El método se completó correctamente. |
|
El objeto no se guardó debido a la falta de espacio en el disco. |
|
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:- Llame a la función WriteClassStg para escribir el identificador de clase para el objeto en el almacenamiento.
- Llame al método IPersistStorage::Save .
- Si es necesario, llame al método IStorage::Commit en el objeto de almacenamiento.
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 |