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