다음을 통해 공유


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, SeekSetCurrentPosition입니다.

이 인터페이스는 Windows Media Format 11 SDK 재배포 가능 구성 요소가 설치된 경우 다음 플랫폼에서 사용할 수 있습니다.

  • WINDOWS XP SP2(서비스 팩 2) 이상
  • KB900325(Windows XP Media Center Edition 2005) 및 KB925766(Windows XP Media Center Edition용 2006년 10월 업데이트 롤업)이 설치된 Windows XP Media Center Edition 2005.

예제

다음 예제에서는 미디어 버퍼에서 바이트 스트림으로 데이터를 씁니다. 미디어 버퍼에 대한 자세한 내용은 미디어 버퍼를 참조하세요.

//-------------------------------------------------------------------
// 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 포함)
라이브러리 Mfuuid.lib

추가 정보

IMFByteStream