Método ISequentialStream::Write (objidl.h)

O método Write grava um número especificado de bytes no objeto de fluxo começando no ponteiro de busca atual.

Sintaxe

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

Parâmetros

[in] pv

Um ponteiro para o buffer que contém os dados que devem ser gravados no fluxo. Um ponteiro válido deve ser fornecido para esse parâmetro mesmo quando cb é zero.

[in] cb

O número de bytes de dados a serem gravados no fluxo. Esse valor pode ser zero.

[out] pcbWritten

Um ponteiro para uma variável ULONG em que esse método grava o número real de bytes gravados no objeto de fluxo. O chamador pode definir esse ponteiro como NULL, caso em que esse método não fornece o número real de bytes gravados.

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK Os dados foram gravados com êxito no objeto stream.
E_PENDING Somente armazenamento assíncrono: parte ou todos os dados a serem gravados não estão disponíveis no momento.
STG_E_MEDIUMFULL Falha na operação de gravação porque não há espaço no dispositivo de armazenamento.
STG_E_ACCESSDENIED O chamador não tem as permissões necessárias para gravar nesse objeto de fluxo.
STG_E_CANTSAVE Os dados não podem ser gravados por motivos diferentes de acesso inadequado ou espaço insuficiente.
STG_E_INVALIDPOINTER Um dos valores de ponteiro não é válido. O parâmetro pv deve conter um ponteiro válido mesmo se cb for zero.
STG_E_REVERTED O objeto foi invalidado por uma operação de reverter acima dele na árvore de transações.
STG_E_WRITEFAULT A operação de gravação falhou devido a um erro de disco. Esse valor também é retornado quando esse método tenta gravar em um fluxo que foi aberto no modo simples (usando o sinalizador STGM_SIMPLE).

Comentários

ISequentialStream::Write grava os dados especificados em um objeto de fluxo. O ponteiro seek é ajustado para o número de bytes realmente gravados. O número de bytes realmente gravados é retornado no parâmetro pcbWritten . Se a contagem de bytes for zero bytes, a operação de gravação não terá efeito.

Se o ponteiro seek estiver atualmente além do final do fluxo e a contagem de bytes for diferente de zero, esse método aumentará o tamanho do fluxo para o ponteiro de busca e gravará os bytes especificados começando no ponteiro seek. Os bytes de preenchimento gravados no fluxo não são inicializados para nenhum valor específico. Isso é o mesmo que o comportamento de fim do arquivo no sistema de arquivos FAT do MS-DOS.

Com uma contagem de bytes zero e um ponteiro de busca após o final do fluxo, esse método não cria os bytes de preenchimento para aumentar o fluxo para o ponteiro de busca. Nesse caso, você deve chamar o método IStream::SetSize para aumentar o tamanho do fluxo e gravar os bytes de preenchimento.

O parâmetro pcbWritten pode ter um valor mesmo se ocorrer um erro.

Na implementação fornecida por COM, os objetos de fluxo não são esparsos. Todos os bytes de preenchimento são eventualmente alocados no disco e atribuídos ao fluxo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho objidl.h
Biblioteca Uuid.lib
DLL Ole32.dll

Confira também

ISequentialStream::Read

IStorage::OpenStream

Istream

IStream – Implementação de arquivo composto

STGMOVE