IMFByteStream::Write メソッド (mfobjects.h)
ストリームにデータを書き込みます。
構文
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 です。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 KB900325 (Windows XP Media Center Edition 2005) とKB925766 (2006 年 10 月 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 |
ヘッダー | mfobjects.h (Mfidl.h を含む) |
Library | Mfuuid.lib |