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

Guarda un objeto en la secuencia especificada.

Sintaxis

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

Parámetros

[in] pStm

Puntero IStream a la secuencia en la que se debe guardar el objeto.

[in] fClearDirty

Indica si se borrará o no la marca de modificado después de completarse el proceso de guardado. Si es TRUE, se debe borrar la marca. Si es FALSE, la marca debe dejarse sin cambios.

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_CANTSAVE
El objeto no se pudo guardar en la secuencia. Este error podría indicar, por ejemplo, que el objeto contiene otro objeto que no es serializable en una secuencia o que una llamada ISequentialStream::Write devolvió STG_E_CANTSAVE.
STG_E_MEDIUMFULL
No se pudo guardar el objeto porque no queda espacio en el dispositivo de almacenamiento.

Comentarios

IPersistStream::Save guarda un objeto en la secuencia especificada e indica si el objeto debe restablecer su marca desfasada.

El puntero de búsqueda se coloca en la ubicación de la secuencia en la que el objeto debe empezar a escribir sus datos. El objeto llama al método ISequentialStream::Write para escribir sus datos.

Al salir, el puntero de búsqueda debe colocarse inmediatamente después de los datos del objeto. La posición del puntero de búsqueda no está definida si se devuelve un error.

Notas a los autores de llamadas

En lugar de llamar directamente a IPersistStream::Save , normalmente se llama a la función auxiliar OleSaveToStream que hace lo siguiente:
  1. Llama a GetClassID para obtener el CLSID del objeto.
  2. Llama a la función WriteClassStm para escribir el CLSID del objeto en la secuencia.
  3. Llama a IPersistStream::Save.
Si llama directamente a estos métodos, puede escribir otros datos en la secuencia después del CLSID antes de llamar a IPersistStream::Save.

La implementación proporcionada por OLE de IPersistStream sigue este mismo patrón.

Notas para los implementadores

El método IPersistStream::Save no escribe el CLSID en la secuencia. El autor de la llamada es responsable de escribir el CLSID.

El método IPersistStream::Save puede leer, escribir en y buscar en la secuencia; pero no debe buscar una ubicación en la secuencia antes de la del puntero de búsqueda en la entrada.

Notas del moniker de url

Guarda un moniker de dirección URL en una secuencia. El formato binario del moniker de url es su cadena de dirección URL en Unicode (puede ser una cadena de dirección URL completa o parcial, consulte CreateURLMonikerEx para obtener más información). Esto se representa como un recuento de caracteres de ULONG seguido de muchos caracteres Unicode.

Requisitos

   
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

Ipersiststream