Поделиться через


Метод IStream::CopyTo (objidl.h)

Метод CopyTo копирует указанное количество байтов из текущего указателя поиска в потоке в текущий указатель поиска в другом потоке.

Синтаксис

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

Параметры

[in] pstm

Указатель на целевой поток. Поток, на который указывает pstm , может быть новым потоком или клоном исходного потока.

[in] cb

Число байтов, которое необходимо копировать из исходного потока.

[out] pcbRead

Указатель на место, куда этот метод записывает фактическое число байтов, считанное из источника. Для этого указателя можно задать значение NULL. В этом случае этот метод не предоставляет фактическое число прочитанных байтов.

[out] pcbWritten

Указатель папки, куда этот метод записывает фактическое число байтов, записанное в целевой объект. Для этого указателя можно задать значение NULL. В этом случае этот метод не предоставляет фактическое число записанных байтов.

Возвращаемое значение

Этот метод может возвращать одно из этих значений.

Код возврата Описание
S_OK Объект потока успешно скопирован.
E_PENDING Только асинхронное хранилище. Часть или все копируемые данные в настоящее время недоступны.
STG_E_INVALIDPOINTER Недопустимое значение одного из параметров указателя.
STG_E_MEDIUMFULL Поток не копируется, так как на устройстве хранения не осталось места.
STG_E_REVERTED Объект был признан недействительным операцией отменить изменения над ним в дереве транзакций.

Комментарии

Метод CopyTo копирует указанные байты из одного потока в другой. Его также можно использовать для копирования потока в себя. Указатель поиска в каждом экземпляре потока корректируется на количество прочитанных или записанных байтов. Этот метод эквивалентен чтению cb байтов в память с помощью ISequentialStream::Read , а затем немедленной записи их в целевой поток с помощью ISequentialStream::Write, хотя IStream::CopyTo будет более эффективным.

Конечный поток может быть клоном исходного потока, созданного путем вызова метода IStream::Clone .

Если IStream::CopyTo возвращает ошибку, нельзя предположить, что указатели поиска допустимы для источника или назначения. Кроме того, значения pcbRead и pcbWritten не имеют смысла, даже если они возвращаются.

Если функция IStream::CopyTo возвращает успешно, фактическое число байтов, прочитанных и записанных, будет одинаковым.

Чтобы скопировать оставшуюся часть источника из текущего указателя поиска, укажите максимальное большое целочисленное значение для параметра cb . Если указатель поиска является началом потока, эта операция копирует весь поток.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header objidl.h
Библиотека Uuid.lib
DLL Ole32.dll

См. также раздел

ISequentialStream::Read

ISequentialStream::Write

IStream — реализация составного файла

IStream::Clone