类型 2 在线商店插件

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

类型 2 在线商店插件是实现 IWMPSubscriptionService 接口和 IWMPSubscriptionService2 接口(可选)的 COM 组件。 Windows 媒体播放器 9 调用 IWMPSubscriptionService 接口的方法。 Windows 媒体播放器 10 或更高版本调用 IWMPSubscriptionServiceIWMPSubscriptionService2 接口的方法。

类型 2 在线商店插件打包为进程内 COM 服务器。 也就是说,插件是在映射到Windows 媒体播放器进程中的.dll文件中实现的。

Windows 媒体播放器根据需要激活类型 2 在线商店插件。 例如,假设用户尝试播放受保护的歌曲,但当前没有播放该歌曲的许可证。 在这种情况下,Windows 媒体播放器检查文件头或 DRM 标头中的 ContentDistributor 属性。 如果存在与在线商店的键名称匹配的值,Windows 媒体播放器检查注册表以查看该在线商店是否提供了类型 2 插件。 如果插件存在,Windows 媒体播放器加载插件并调用其方法以确定用户是否有权播放歌曲。

以下列表描述了Windows 媒体播放器调用类型 2 在线商店插件的一些方案。

  • 用户尝试播放在线商店内容。 发生这种情况时,Windows 媒体播放器调用插件的 IWMPSubscriptionService::allowPlay 方法,传递指向用户尝试播放的数字媒体项的指针。 在线商店可以利用此机会更新用户的许可证以播放内容或禁止播放。 如果插件在 pfAllowPlay 参数中返回 TRUE,Windows 媒体播放器尝试播放内容。 如果有效许可证不存在,播放仍将失败;此过程不会绕过数字版权管理 (DRM) 。
  • 用户请求将内容刻录到 CD 或 DVD 的权限。 发生这种情况时,Windows 媒体播放器调用插件的 IWMPSubscriptionService::allowCDBurn 方法。
  • 用户尝试将在线商店内容与设备同步,或者Windows 媒体播放器已准备好自动将在线商店内容与设备同步。 发生这种情况时,Windows 媒体播放器调用插件的 IWMPSubscriptionService2::p repareForSync 方法,以提醒在线商店媒体项即将与特定设备同步,该设备由其规范名称标识。 这是在线商店确定是否允许用户将媒体项与设备同步的机会。 这也是在线商店准备同步设备并更新与设备或媒体项关联的记录(如同步计数)的机会。 插件应将权限、准备和记录保留任务传递给单独的线程,并立即从 prepareForSync 返回。 当单独的线程完成其工作后,它必须通过调用 IWMPSubscriptionServiceCallback::onComplete 来通知Windows 媒体播放器。
  • 设备可用于后台处理。 连接设备后,Windows 媒体播放器通过调用 IWMPSubscriptionService2::d eviceAvailable 来提醒在线商店设备可用且处于空闲状态。
  • 用户单击按钮以激活 Windows 媒体播放器 中的在线商店。 发生这种情况时,Windows 媒体播放器调用插件的 IWMPSubscriptionService2::serviceEvent 方法。 当用户切换到另一个服务时,Windows 媒体播放器也会调用此方法。
  • Windows 媒体播放器进入低活动状态。 发生这种情况时,Player 会调用插件的 IWMPSubscriptionService::startBackgroundProcessing 方法。 在线商店可以利用此机会启动或唤醒执行后台任务的任何线程,例如续订过期的许可证或编译游戏计数数据。
  • Windows 媒体播放器进入高活动状态。 发生这种情况时,Windows 媒体播放器调用插件的 IWMPSubscriptionService2::stopBackgroundProcessing 方法。 这会通知插件它必须挂起执行后台任务的任何线程。

Windows 媒体播放器播放器会话结束时释放在线商店组件。 发布后,组件必须中断正在进行的任何后台处理,然后关闭。

IWMPSubscriptionService 接口

IWMPSubscriptionService2 接口

IWMPSubscriptionServiceCallback 接口

类型 2 在线商店示例