使用媒体基础事件模型
[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
Windows Media DRM 客户端扩展 API 支持的异步方法使用媒体基础 SDK 使用的相同事件模型。 每个支持异步方法的对象都实现 IWMDRMEventGenerator 接口,该接口可用于在异步操作完成时检索事件。
IWMDRMEventGenerator 接口继承自 IMFMediaEventGenerator 接口,媒体基础 SDK 文档中记录了该接口。
DRM 个性化示例中的示例代码使用 IMFMediaEventGenerator::GetEvent 方法一次从队列中检索一个事件。 使用 GetEvent 比将 IMFMediaEventGenerator::BeginGetEvent 和 IMFMediaEventGenerator::EndGetEvent 与回调配合使用更简单,这使得代码示例更易于理解。 无论是在代码中使用 GetEvent 还是实现 IMFAsyncCallback 并使用 BeginGetEvent 和 EndGetEvent,接收事件后处理事件的逻辑都是相同的。
一些异步方法生成事件,这些事件包含对可用于获取更详细状态信息的对象的引用。 在这些情况下,生成的事件具有 一个 IUnknown 指针作为其值,可以查询该指针以检索状态接口。 以下列表汇总了异步调用、生成的事件和其他接口之间的关系。
- IWMDRMLicenseManagement::BackupLicenses 方法使用关联的 IWMDRMLicenseBackupRestoreStatus 接口生成 MEWMDRMLicenseBackupProgress 事件。
- IWMDRMLicenseManagement::RestoreLicenses 方法使用关联的 IWMDRMLicenseBackupRestoreStatus 接口生成 MEWMDRMLicenseRestoreProgress 事件。
- IWMDRMSecurity::P erformSecurityUpdate 方法用于执行个人化时,使用关联的 IWMDRMIndividualizationStatus 接口生成 MEWMDRMIndividualizationProgress 事件。
- IWMDRMLicenseManagement::AcquireLicense 方法用于为非无提示许可证获取准备数据时,使用关联的 IWMDRMNonSilentLicenseAquisition 接口生成 MEWMDRMLicenseAcquisitionCompleted 事件。
相关主题