Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Записывает данные в поток.
Синтаксис
HRESULT Write(
[in] const BYTE *pb,
[in] ULONG cb,
[out] ULONG *pcbWritten
);
Параметры
[in] pb
Указатель на буфер, содержащий данные для записи.
[in] cb
Размер буфера в байтах.
[out] pcbWritten
Получает число записанных байтов.
Возвращаемое значение
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Этот метод записывает содержимое буфера PB в поток, начиная с текущей позиции потока. Число записанных байтов возвращается в параметре pcbWritten .
Этот метод является синхронным. Он блокируется до завершения операции записи.
Примечания о реализации:Этот метод должен обновить текущую позицию в потоке, добавив число байтов, записанных в поток, которое задается значением, возвращенным в pcbWritten, к смещению текущей позиции.
Другие методы, которые могут обновить текущую позицию: Read, BeginRead, BeginWrite, Seek и SetCurrentPosition.
Этот интерфейс доступен на следующих платформах, если установлены распространяемые компоненты пакета SDK для Windows Media Format 11:
- Windows XP с пакетом обновления 2 (SP2) и более поздних версий.
- Windows XP Media Center Edition 2005 с установленным KB900325 (Windows XP Media Center Edition 2005) и KB925766 (накопительный пакет обновления за октябрь 2006 г. для Windows XP Media Center Edition).
Примеры
В следующем примере данные из буфера мультимедиа записываются в поток байтов. Дополнительные сведения о буферах мультимедиа см. в разделе Буферы мультимедиа.
//-------------------------------------------------------------------
// WriteBufferToByteStream
//
// Writes data from a media buffer to a byte stream.
//-------------------------------------------------------------------
HRESULT WriteBufferToByteStream(
IMFByteStream *pStream, // Pointer to the byte stream.
IMFMediaBuffer *pBuffer, // Pointer to the media buffer.
DWORD *pcbWritten // Receives the number of bytes written.
)
{
HRESULT hr = S_OK;
DWORD cbData = 0;
DWORD cbWritten = 0;
BYTE *pMem = NULL;
hr = pBuffer->Lock(&pMem, NULL, &cbData);
if (SUCCEEDED(hr))
{
hr = pStream->Write(pMem, cbData, &cbWritten);
}
if (SUCCEEDED(hr))
{
if (pcbWritten)
{
*pcbWritten = cbWritten;
}
}
if (pMem)
{
pBuffer->Unlock();
}
return hr;
}
Следующий шаблон функции записывает типизированные переменные в поток байтов.
template <class T>
HRESULT WriteToStream(
IMFByteStream *pStream, // Pointer to the byte stream.
const T* p, // Data to write to the stream.
ULONG cb = sizeof(T) // Size of the data in bytes.
)
{
ULONG cbWritten = 0;
HRESULT hr = S_OK;
hr = pStream->Write((const BYTE*)p, cb, &cbWritten);
if (SUCCEEDED(hr) && (cbWritten != cb))
{
hr = E_FAIL;
}
return hr;
}
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
| Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
| Целевая платформа | Windows |
| Header | mfobjects.h (включая Mfidl.h) |
| Библиотека | Mfuuid.lib |