Share via


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

Notifica al objeto que puede escribir en su objeto de almacenamiento. Para ello, notifica al objeto que puede revertir del modo NoScribble (en el que no debe escribir en su objeto de almacenamiento), al modo Normal (en el que puede). El objeto entra en modo NoScribble cuando recibe una llamada IPersistStorage::Save .

Sintaxis

HRESULT SaveCompleted(
  [in] IStorage *pStgNew
);

Parámetros

[in] pStgNew

Puntero IStorage al nuevo objeto de almacenamiento, si es diferente del objeto de almacenamiento antes de guardarlo. Este puntero puede ser NULL si el objeto de almacenamiento actual no cambia durante la operación de guardado. Si el objeto está en modo HandsOff, este parámetro debe ser distinto de NULL.

Valor devuelto

Este método puede devolver los valores siguientes.

Código devuelto Descripción
S_OK
El método se completó correctamente.
E_OUTOFMEMORY
El objeto permaneció en modo HandsOff o NoScribble debido a una falta de memoria. Normalmente, este error se produce cuando el objeto no puede abrir los flujos y objetos de almacenamiento necesarios en pStgNew.
E_INVALIDARG
El parámetro pStgNew no es válido. Normalmente, este error se produce si pStgNew es NULL cuando el objeto está en modo HandsOff.
E_UNEXPECTED
El objeto está en modo Normal y no hubo ninguna llamada anterior a IPersistStorage::Save o IPersistStorage::HandsOffStorage.

Comentarios

Este método notifica a un objeto que puede revertir al modo Normal y puede volver a escribir en su objeto de almacenamiento. El objeto sale del modo NoScribble o del modo HandsOff.

Si el objeto se revierte del modo HandsOff, el parámetro pStgNew debe ser distinto de NULL. En el modo HandsOffFromNormal, este parámetro es el nuevo objeto de almacenamiento que reemplaza el que revocó el método IPersistStorage::HandsOffStorage . Los datos del objeto de almacenamiento son una copia de los datos del objeto de almacenamiento revocado. En el modo HandsOffAfterSave, los datos son los mismos que los datos que se guardaron más recientemente. No es lo mismo que los datos del objeto de almacenamiento revocado.

Si el objeto se revierte desde el modo NoScribble, el parámetro pStgNew puede ser NULL o no NULL. Si es NULL, el objeto tiene acceso de nuevo a su objeto de almacenamiento. Si no es NULL, el objeto de componente debe simular la recepción de una llamada a su método HandsOffStorage . Si el objeto de componente no puede simular esta llamada, su contenedor debe estar preparado para llamar realmente al método HandsOffStorage .

Este método debe llamar recursivamente a los objetos anidados que se cargan o ejecutan.

Si este método devuelve un código de error, el objeto no se devuelve al modo Normal. Por lo tanto, el objeto contenedor puede intentar diferentes estrategias de guardado.

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