使用自定义接收器

[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

如果你有特殊的写作需求,可以创建自己的编写器接收器。 编写器通过调用 IWMWriterSink 的方法来维护与接收器的单向通信。 若要创建自己的接收器,请在应用程序中的类中实现 IWMWriterSink 接口。 此过程与实现 Windows 媒体格式 SDK 对象使用的任何其他回调接口非常相似。 有关回调的详细信息,请参阅 使用回调方法

在 IWMWriterSink::OnHeader 中收到的缓冲区应写入文件开头,在 OnDataUnit 中接收的所有缓冲区应按顺序写出。 OnHeader 将在开头调用,但也可能在其他时间调用,如果是,应尽可能覆盖原始标头。 如果应用程序由于某种原因无法执行此操作,则只需忽略后续 OnHeader 调用即可。

自定义接收器应通过调用 IWMStatusCallback::OnStatus 回调方法将其状态传达给写入应用程序。 如果将接收器实现为 COM 对象,可能需要公开 IWMRegisterCallback 接口。 但是,可以将 OnStatus 回调的地址传递给接收器,并按所需的任何方式设置上下文。

使用编写器接收器