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 |