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


Метод ISequentialStream::Write (objidl.h)

Метод Write записывает указанное количество байтов в объект потока, начиная с текущего указателя поиска.

Синтаксис

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

Параметры

[in] pv

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

[in] cb

Количество байтов данных для записи в поток. Это значение может быть равно 0.

[out] pcbWritten

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

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

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

Код возврата Описание
S_OK Данные успешно записаны в объект потока.
E_PENDING Только асинхронное хранилище. Часть или все записываемые данные в настоящее время недоступны.
STG_E_MEDIUMFULL Операция записи завершилась сбоем, так как на запоминающее устройство не осталось места.
STG_E_ACCESSDENIED Вызывающий объект не имеет необходимых разрешений для записи в этот объект потока.
STG_E_CANTSAVE Данные не могут быть записаны по другим причинам, кроме неправильного доступа или недостаточного места.
STG_E_INVALIDPOINTER Одно из значений указателя недопустимо. Параметр pv должен содержать допустимый указатель, даже если cb равен нулю.
STG_E_REVERTED Объект был признан недействительным в результате операции отменить изменения над ним в дереве транзакций.
STG_E_WRITEFAULT Операция записи завершилась сбоем из-за ошибки диска. Это значение также возвращается, когда этот метод пытается выполнить запись в поток, открытый в простом режиме (с использованием флага STGM_SIMPLE).

Комментарии

ISequentialStream::Write записывает указанные данные в объект потока. Указатель поиска корректируется в соответствии с фактически записанным числом байтов. Число фактически записанных байтов возвращается в параметре pcbWritten . Если число байтов равно нулю байтов, операция записи не оказывает никакого влияния.

Если указатель поиска находится за концом потока, а число байтов не равно нулю, этот метод увеличивает размер потока в указатель поиска и записывает указанные байты, начиная с указателя поиска. Байты заполнения, записанные в поток, не инициализируются каким-либо определенным значением. Это то же самое, что поведение конца файла в файловой системе MS-DOS FAT.

При нулевом количестве байтов и указателе поиска после конца потока этот метод не создает байты заполнения для увеличения потока до указателя поиска. В этом случае необходимо вызвать метод IStream::SetSize , чтобы увеличить размер потока и записать байты заполнения.

Параметр pcbWritten может иметь значение даже при возникновении ошибки.

В реализации, предоставленной COM, потоковые объекты не являются разреженными. Все байты заполнения в конечном итоге выделяются на диске и назначаются потоку.

Требования

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

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

ISequentialStream::Read

IStorage::OpenStream

IStream

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

STGMOVE