Partager via


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

La méthode CopyTo copie un nombre spécifié d’octets du pointeur de recherche actuel dans le flux vers le pointeur de recherche actuel dans un autre flux.

Syntaxe

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

Paramètres

[in] pstm

Pointeur vers le flux de destination. Le flux pointé vers pstm peut être un nouveau flux ou un clone du flux source.

[in] cb

Nombre d'octets à copier à partir du flux source.

[out] pcbRead

Pointeur vers l'emplacement dans lequel cette méthode écrit le nombre d'octets réel lus à partir de la source. Vous pouvez définir ce pointeur sur NULL. Dans ce cas, cette méthode ne fournit pas le nombre réel d’octets lus.

[out] pcbWritten

Pointeur vers l'emplacement dans lequel cette méthode écrit le nombre d'octets réel dans la destination. Vous pouvez définir ce pointeur sur NULL. Dans ce cas, cette méthode ne fournit pas le nombre réel d’octets écrits.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Code de retour Description
S_OK L’objet stream a été copié avec succès.
E_PENDING Stockage asynchrone uniquement : une partie ou la totalité des données à copier n’est actuellement pas disponible.
STG_E_INVALIDPOINTER La valeur de l’un des paramètres de pointeur n’est pas valide.
STG_E_MEDIUMFULL Le flux n’est pas copié, car il n’y a plus d’espace sur le périphérique de stockage.
STG_E_REVERTED L’objet a été invalidé par une opération de rétablissement au-dessus de lui dans l’arborescence des transactions.

Remarques

La méthode CopyTo copie les octets spécifiés d’un flux vers un autre. Il peut également être utilisé pour copier un flux vers lui-même. Le pointeur de recherche dans chaque flux instance est ajusté pour le nombre d’octets lus ou écrits. Cette méthode équivaut à lire des octets cb en mémoire à l’aide de ISequentialStream ::Read , puis à les écrire immédiatement dans le flux de destination à l’aide de ISequentialStream ::Write, bien que IStream ::CopyTo soit plus efficace.

Le flux de destination peut être un clone du flux source créé en appelant la méthode IStream ::Clone .

Si IStream ::CopyTo retourne une erreur, vous ne pouvez pas supposer que les pointeurs de recherche sont valides pour la source ou la destination. En outre, les valeurs de pcbRead et pcbWritten ne sont pas significatives même si elles sont retournées.

Si IStream ::CopyTo retourne correctement, le nombre réel d’octets lus et écrits est le même.

Pour copier le reste de la source à partir du pointeur de recherche actuel, spécifiez la valeur entière maximale pour le paramètre cb . Si le pointeur de recherche est le début du flux, cette opération copie l’intégralité du flux.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidl.h
Bibliothèque Uuid.lib
DLL Ole32.dll

Voir aussi

ISequentialStream ::Read

ISequentialStream ::Write

IStream - Implémentation de fichier composé

IStream ::Clone