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 |