非无提示许可证获取

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

非无提示许可证获取使许可证提供程序能够通过网页与最终用户交互,这是许可证获取过程中的中间步骤。 发起非无提示许可证获取是为了响应尝试访问受保护内容的用户。

若要执行非无提示许可证获取,请使用以下步骤:

  1. 调用 IWMDRMLicenseManagement::AcquireLicense 方法。 将受保护文件中的 DRM 标头作为 bstrHeaderData 参数传入。 在 bstrActions 参数中指定要授予许可证的权限。 最后,将 dwFlags 参数设置为 WMDRM_ACQUIRE_LICENSE_NONSILENT。
  2. IWMDRMLicenseManagement 接口的陷阱事件。 收到 MEWMDRMLicenseAcquisitionCompleted 事件时,通过调用 IMFMediaEvent::GetValue 获取其关联值。 该值的类型应为 VT_UNKNOWN,是指向 IUnknown 接口的指针。
  3. 调用步骤 2 中检索到的 IUnknown 接口的 QueryInterface 方法以获取 IWMDRMNonSilentLicenseAquisition 接口。
  4. 调用 IWMDRMNonSilentLicenseAquisition::GetChallenge 以检索许可证质询。 如果还没有许可证服务器的 URL,请调用 IWMDRMNonSilentLicenseAquisition::GetURL
  5. 将质询发送到 URL 指定的网页。

获取许可证

使用媒体基础事件模型