向编写器添加接收器

编写器接收器是独立于编写器的对象,必须添加到编写器中才能使用。 如果要写入文件,只需调用 IWMWriter::SetOutputFilename 即可自动设置文件接收器。 否则,若要将接收器添加到编写器,请调用 IWMWriterAdvanced::AddSink 方法。 AddSink 需要指向接收器的 IWMWriterSink 接口的指针。

使用完接收器后,应根据接收器的类型调用适当的方法将其关闭,然后通过调用 IWMWriterAdvanced::RemoveSink 将其从编写器中删除。

以下示例代码演示如何创建编写器文件接收器并将其添加到编写器。 有关使用此代码的详细信息,请参阅 使用代码示例

HRESULT AddFileSink(IWMWriterFileSink** ppFileSink, IWMWriter* pWriter)
{
    HRESULT hr = S_OK;
    IWMWriterSink*     pSinkBase       = NULL;
    IWMWriterAdvanced* pWriterAdvanced = NULL;

    hr = CreateWriterFileSink(ppFileSink);
    GOTO_EXIT_IF_FAILED(hr);

    hr = *ppFileSink->QueryInterface(IID_IWMWriterSink, 
                                     (void**) &pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriter->QueryInterface(IID_IWMWriterAdvanced,
                                 (void**) &pWriterAdvanced);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriterAdvanced->AddSink(pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

Exit:
    SAFE_RELEASE(pSinkBase);
    SAFE_RELEASE(pWriterAdvanced);
    return hr;
}

从接收器获取错误消息

IWMWriterAdvanced 接口

使用编写器接收器