Compartilhar via


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

Salva um objeto no fluxo especificado.

Sintaxe

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

Parâmetros

[in] pStm

Um ponteiro IStream para o fluxo no qual o objeto deve ser salvo.

[in] fClearDirty

Indica se o sinalizador de sujo deve ser limpo após a conclusão do salvamento. Se TRUE, o sinalizador deverá ser limpo. Se FALSE, o sinalizador deverá ser deixado inalterado.

Valor retornado

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
STG_E_CANTSAVE
O objeto não pôde se salvar no fluxo. Esse erro pode indicar, por exemplo, que o objeto contém outro objeto que não é serializável para um fluxo ou que uma chamada ISequentialStream::Write retornou STG_E_CANTSAVE.
STG_E_MEDIUMFULL
Não foi possível salvar o objeto porque não há espaço no dispositivo de armazenamento.

Comentários

IPersistStream::Save salva um objeto no fluxo especificado e indica se o objeto deve redefinir seu sinalizador sujo.

O ponteiro seek é posicionado no local no fluxo no qual o objeto deve começar a gravar seus dados. O objeto chama o método ISequentialStream::Write para gravar seus dados.

Na saída, o ponteiro seek deve ser posicionado imediatamente após os dados do objeto. A posição do ponteiro seek será indefinida se um erro retornar.

Anotações aos Chamadores

Em vez de chamar IPersistStream::Save diretamente, você normalmente chama a função auxiliar OleSaveToStream , que faz o seguinte:
  1. Chama GetClassID para obter o CLSID do objeto.
  2. Chama a função WriteClassStm para gravar o CLSID do objeto no fluxo.
  3. Chama IPersistStream::Save.
Se você chamar esses métodos diretamente, poderá gravar outros dados no fluxo após o CLSID antes de chamar IPersistStream::Save.

A implementação fornecida por OLE de IPersistStream segue esse mesmo padrão.

Observações aos implementadores

O método IPersistStream::Save não grava o CLSID no fluxo. O chamador é responsável por escrever o CLSID.

O método IPersistStream::Save pode ler, gravar e buscar no fluxo; mas não deve buscar um local no fluxo antes do ponteiro de busca na entrada.

Notas do Moniker de URL

Salva um moniker de URL em um fluxo. O formato binário do moniker de URL é sua cadeia de caracteres de URL em Unicode (pode ser uma cadeia de caracteres de URL completa ou parcial, consulte CreateURLMonikerEx para obter detalhes). Isso é representado como uma contagem ULONG de caracteres seguidos por tantos caracteres Unicode.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Ipersiststream