Compartilhar via


Método IStream::CopyTo (objidl.h)

O método CopyTo copia um número especificado de bytes do ponteiro de busca atual no fluxo para o ponteiro de busca atual em outro fluxo.

Sintaxe

HRESULT CopyTo(
  [in]  IStream        *pstm,
  [in]  ULARGE_INTEGER cb,
  [out] ULARGE_INTEGER *pcbRead,
  [out] ULARGE_INTEGER *pcbWritten
);

Parâmetros

[in] pstm

Um ponteiro para o fluxo de destino. O fluxo apontado por pstm pode ser um novo fluxo ou um clone do fluxo de origem.

[in] cb

O número de bytes a serem copiados do fluxo de origem.

[out] pcbRead

Um ponteiro para o local onde esse método grava o número real de bytes lidos da origem. Você pode definir esse ponteiro como NULL. Nesse caso, esse método não fornece o número real de bytes lidos.

[out] pcbWritten

Um ponteiro para o local onde esse método grava o número real de bytes gravados no destino. Você pode definir esse ponteiro como NULL. Nesse caso, 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 O objeto stream foi copiado com êxito.
E_PENDING Somente armazenamento assíncrono: parte ou todos os dados a serem copiados não estão disponíveis no momento.
STG_E_INVALIDPOINTER O valor de um dos parâmetros de ponteiro é inválido.
STG_E_MEDIUMFULL O fluxo não é copiado porque não há espaço no dispositivo de armazenamento.
STG_E_REVERTED O objeto foi invalidado por uma operação de reverter acima dele na árvore de transações.

Comentários

O método CopyTo copia os bytes especificados de um fluxo para outro. Ele também pode ser usado para copiar um fluxo para si mesmo. O ponteiro de busca em cada instância de fluxo é ajustado para o número de bytes lidos ou gravados. Esse método é equivalente à leitura de bytes cb na memória usando ISequentialStream::Read e, em seguida, gravá-los imediatamente no fluxo de destino usando ISequentialStream::Write, embora IStream::CopyTo seja mais eficiente.

O fluxo de destino pode ser um clone do fluxo de origem criado chamando o método IStream::Clone .

Se IStream::CopyTo retornar um erro, você não poderá assumir que os ponteiros de busca são válidos para a origem ou o destino. Além disso, os valores de pcbRead e pcbWritten não são significativos, mesmo que sejam retornados.

Se IStream::CopyTo retornar com êxito, o número real de bytes lidos e gravados será o mesmo.

Para copiar o restante da origem do ponteiro de busca atual, especifique o valor inteiro grande máximo para o parâmetro cb . Se o ponteiro de busca for o início do fluxo, essa operação copiará todo o 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

ISequentialStream::Write

IStream – Implementação de arquivo composto

IStream::Clone