Метод IByteBuffer::Write
[Метод Write доступен для использования в операционных системах, указанных в разделе Требования. Он недоступен для использования в Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях, Windows Vista, Windows Server 2008 и последующих версиях операционной системы. Интерфейс IStream предоставляет аналогичные функции.]
Метод Write записывает указанное число из байтов в объект потока, начиная с текущего указателя поиска.
Синтаксис
HRESULT Write(
[in] BYTE *pByte,
[in] LONG cb,
[out] LONG *pcbWritten
);
Параметры
-
pByte [in]
-
Адрес буфера, содержащего данные, которые должны быть записаны в поток. Для этого параметра должен быть указан допустимый указатель, даже если cb равен нулю.
-
cb [in]
-
Число байтов данных для записи в поток. Этот параметр может быть равен нулю.
-
pcbWritten [out]
-
Адрес переменной LONG , в которой этот метод записывает фактическое число байтов, записанных в объект потока. Вызывающий объект может задать для этого указателя значение NULL. В этом случае этот метод не предоставляет фактическое число записанных байтов.
Возвращаемое значение
Возвращаемое значение — HRESULT. Значение S_OK указывает, что вызов выполнен успешно.
Комментарии
Метод IByteBuffer::Write записывает указанные данные в объект потока. Указатель поиска корректируется в соответствии с фактически записанным числом байтов. Число фактически записанных байтов возвращается в параметре pcbWritten . Если число байтов равно нулю байтов, операция записи не оказывает никакого влияния.
Если указатель поиска находится за концом потока, а число байтов не равно нулю, этот метод увеличивает размер потока в указатель поиска и записывает указанные байты, начиная с указателя поиска. Байты заполнения, записанные в поток, не инициализируются каким-либо определенным значением. Это то же самое, что поведение конца файла в файловой системе MS-DOS FAT.
При нулевом количестве байтов и указателе поиска после конца потока этот метод не создает байты заполнения для увеличения потока до указателя поиска. В этом случае необходимо вызвать метод IByteBuffer::SetSize , чтобы увеличить размер потока и записать байты заполнения.
Параметр pcbWritten может иметь значение даже при возникновении ошибки.
В реализации, предоставленной COM, потоковые объекты не являются разреженными. Все байты заполнения в конечном итоге выделяются на диске и назначаются потоку.
Примеры
В следующем примере показано запись байтов в объект потока.
LONG lWrite;
HRESULT hr;
// Write to the buffer.
// byData is an array of 64 bytes.
hr = pIByteBuff->Write(byData,
64,
&lWrite);
if (FAILED(hr))
printf("Failed IByteBuffer::Write\n");
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows XP [только классические приложения] |
Минимальная версия сервера |
Windows Server 2003 [только классические приложения] |
Окончание поддержки клиентов |
Windows XP |
Прекращение поддержки сервера |
Windows Server 2003 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
IID |
IID_IByteBuffer определяется как E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |