Метод 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 |