Condividi tramite


Metodo IStream::CopyTo (objidl.h)

Il metodo CopyTo copia un numero specificato di byte dal puntatore di ricerca corrente nel flusso al puntatore di ricerca corrente in un altro flusso.

Sintassi

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

Parametri

[in] pstm

Puntatore al flusso di destinazione. Il flusso a cui fa riferimento pstm può essere un nuovo flusso o un clone del flusso di origine.

[in] cb

Numero di byte da copiare dal flusso di origine.

[out] pcbRead

Puntatore al percorso in cui questo metodo scrive il numero effettivo di byte letti dall'origine. È possibile impostare questo puntatore su NULL. In questo caso, questo metodo non fornisce il numero effettivo di byte letti.

[out] pcbWritten

Puntatore al percorso in cui questo metodo scrive il numero effettivo di byte scritti nella destinazione. È possibile impostare questo puntatore su NULL. In questo caso, questo metodo non fornisce il numero effettivo di byte scritti.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK L'oggetto stream è stato copiato correttamente.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati da copiare non sono attualmente disponibili.
STG_E_INVALIDPOINTER Il valore di uno dei parametri del puntatore non è valido.
STG_E_MEDIUMFULL Il flusso non viene copiato perché non c'è spazio lasciato nel dispositivo di archiviazione.
STG_E_REVERTED L'oggetto è stato invalidato da un'operazione di ripristino sopra di essa nell'albero delle transazioni.

Commenti

Il metodo CopyTo copia i byte specificati da un flusso a un altro. Può essere usato anche per copiare un flusso in se stesso. Il puntatore di ricerca in ogni istanza di flusso viene modificato per il numero di byte letti o scritti. Questo metodo equivale alla lettura dei byte cb nella memoria usando ISequentialStream::Read e quindi scriverli immediatamente nel flusso di destinazione usando ISequentialStream::Write, anche se IStream::CopyTo sarà più efficiente.

Il flusso di destinazione può essere un clone del flusso di origine creato chiamando il metodo IStream::Clone .

Se IStream::CopyTo restituisce un errore, non è possibile presupporre che i puntatori di ricerca siano validi per l'origine o la destinazione. Inoltre, i valori di pcbRead e pcbScritto non sono significativi anche se vengono restituiti.

Se IStream::CopyTo restituisce correttamente, il numero effettivo di byte letti e scritti è lo stesso.

Per copiare il resto dell'origine dal puntatore di ricerca corrente, specificare il valore intero massimo di grandi dimensioni per il parametro cb . Se il puntatore di ricerca è l'inizio del flusso, questa operazione copia l'intero flusso.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h
Libreria Uuid.lib
DLL Ole32.dll

Vedi anche

ISequentialStream::Read

ISequentialStream::Write

IStream - Implementazione di file composti

IStream::Clone