共用方式為


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 緩衝區的內容寫入數據流。 寫入的位元組數目會傳回 於 wwwWritten 參數中。

這個方法是同步方法。 它會封鎖直到寫入作業完成為止。

實作注意事項:這個方法應該藉由將寫入數據流的位元元組數目新增至數據流,以將傳回的值指定至 目前位置位移,以更新數據流中的目前位置。

其他可更新目前位置的方法包括 ReadBeginRead、BeginWriteSeekSetCurrentPosition

如果已安裝 Windows Media Format 11 SDK 可轉散發元件,此介面可在下列平臺上使用:

  • Windows XP with Service Pack 2 (SP2) 和更新版本。
  • 已安裝 Windows XP Media Center Edition 2005 KB900325 (Windows XP Media Center 版本 2005) 和 KB925766 (2006 年 10 月更新匯總) 。

範例

下列範例會將數據從媒體緩衝區寫入位元組數據流。 如需媒體緩衝區的詳細資訊,請參閱 媒體緩衝區

//-------------------------------------------------------------------
// 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 (include Mfidl.h)
程式庫 Mfuuid.lib

另請參閱

IMFByteStream