Freigeben über


IStream::CopyTo-Methode (objidl.h)

Die CopyTo-Methode kopiert eine angegebene Anzahl von Bytes aus dem aktuellen Suchzeiger im Stream in den aktuellen Suchzeiger in einem anderen Stream.

Syntax

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

Parameter

[in] pstm

Ein Zeiger auf den Zieldatenstrom. Der Stream, auf den pstm verweist, kann ein neuer Datenstrom oder ein Klon des Quelldatenstroms sein.

[in] cb

Die Anzahl der Bytes, die aus dem Quelldatenstrom kopiert werden sollen.

[out] pcbRead

Ein Zeiger auf die Position, an der diese Methode die tatsächliche Anzahl von Bytes schreibt, die aus der Quelle gelesen wurden. Sie können diesen Zeiger auf NULL festlegen. In diesem Fall stellt diese Methode nicht die tatsächliche Anzahl der gelesenen Bytes bereit.

[out] pcbWritten

Ein Zeiger auf die Position, an der diese Methode die tatsächliche Anzahl von Bytes schreibt, die in das Ziel geschrieben wurden. Sie können diesen Zeiger auf NULL festlegen. In diesem Fall stellt diese Methode nicht die tatsächliche Anzahl der geschriebenen Bytes bereit.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Rückgabecode Beschreibung
S_OK Das Streamobjekt wurde erfolgreich kopiert.
E_PENDING Nur asynchroner Speicher: Ein Teil oder alle zu kopierenden Daten sind derzeit nicht verfügbar.
STG_E_INVALIDPOINTER Der Wert eines der Zeigerparameter ist ungültig.
STG_E_MEDIUMFULL Der Stream wird nicht kopiert, da auf dem Speichergerät kein Speicherplatz mehr vorhanden ist.
STG_E_REVERTED Das Objekt wurde durch einen rückgängig machen Vorgang darüber in der Transaktionsstruktur ungültig gemacht.

Hinweise

Die CopyTo-Methode kopiert die angegebenen Bytes aus einem Stream in einen anderen. Es kann auch verwendet werden, um einen Stream in sich selbst zu kopieren. Der Suchzeiger in jedem Stream instance wird an die Anzahl der gelesenen oder geschriebenen Bytes angepasst. Diese Methode entspricht dem Lesen von cb-Bytes in den Arbeitsspeicher mithilfe von ISequentialStream::Read und dem sofortigen Schreiben in den Zieldatenstrom mithilfe von ISequentialStream::Write, obwohl IStream::CopyTo effizienter ist.

Der Zieldatenstrom kann ein Klon des Quelldatenstroms sein, der durch Aufrufen der IStream::Clone-Methode erstellt wurde.

Wenn IStream::CopyTo einen Fehler zurückgibt, können Sie nicht davon ausgehen, dass die Suchzeiger für die Quelle oder das Ziel gültig sind. Darüber hinaus sind die Werte von pcbRead und pcbWritten nicht aussagekräftig, obwohl sie zurückgegeben werden.

Wenn IStream::CopyTo erfolgreich zurückgibt, ist die tatsächliche Anzahl der gelesenen und geschriebenen Bytes identisch.

Um den Rest der Quelle aus dem aktuellen Suchzeiger zu kopieren, geben Sie den maximal großen ganzzahligen Wert für den cb-Parameter an. Wenn der Suchzeiger der Anfang des Datenstroms ist, kopiert dieser Vorgang den gesamten Datenstrom.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidl.h
Bibliothek Uuid.lib
DLL Ole32.dll

Weitere Informationen

ISequentialStream::Read

ISequentialStream::Write

IStream – Implementierung von Zusammengesetzten Dateien

IStream::Clone